使用jersey搭建restful介面
阿新 • • 發佈:2019-01-25
使用jersey搭建的restful介面,不一定是最優方案。
springMVC 可能才是最完美的解決方案。
1.配置maven,載入jersey相關的jar包
<dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-server</artifactId> <version>1.9</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-json</artifactId> <version>1.9</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId> <version>1.9</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-fastinfoset</artifactId> <version>1.9</version> </dependency> <dependency> <groupId>com.sun.jersey.contribs</groupId> <artifactId>jersey-spring</artifactId> <version>1.9</version> <!-- 去除自帶的spring版本 --> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> <exclusion> <artifactId>spring-web</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency>
2.配置web.xml檔案
<!-- Jersey Servlet 配置 --> <servlet> <servlet-name>JerseyServlet</servlet-name> <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>JerseyServlet</servlet-name> <url-pattern>/REST/*</url-pattern> </servlet-mapping>
3.編寫介面API
4.測試import javax.servlet.http.HttpServletRequest; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import net.sf.json.JSONObject; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.sand.mag.bean.QSRentaResultInBean; import com.sand.mag.bean.QSRentalInBean; import com.sand.mag.bean.QSRentalOutBean; import com.sand.mag.common.MAGConstant; import com.sand.mag.operation.QSRentalOperation; import com.sand.mag.operation.QSRentalResultOperation; import com.sand.mag.operation.base.OPCaller; import com.sand.mag.operation.base.OperationContext; import com.sand.mag.utils.StrUtil; @Component @Path("/QSRentalAPI") public class QsRentalAPI { private final static Log logger = LogFactory.getLog(QsRentalAPI.class); @Autowired private OperationContext context; @Path("QSRental") @Produces({ MediaType.TEXT_PLAIN }) @POST public String qsRental(@Context HttpServletRequest request) { String response = ""; try { String json = StrUtil.buildJsonString(request); QSRentalInBean bean = (QSRentalInBean) JSONObject.toBean( JSONObject.fromObject(json), QSRentalInBean.class); context.setAttribute(QSRentalOperation.IN_BEAN, bean); OPCaller.call(QSRentalOperation.ID, context); response = (String) context .getAttribute(QSRentalOperation.OUT_STRING); } catch (Exception e) { e.printStackTrace(); if (e.getMessage().equals(MAGConstant.C_CHECK_SIGN_FAIL)) { return QSRentalOutBean.jsonCommonReturn(MAGConstant.C_CHECK_SIGN_FAIL, MAGConstant.M_CHECK_SIGN_FAIL); } if (e.getMessage().equals(MAGConstant.C_SYSTEM_EXCEPTION)) { return QSRentalOutBean.jsonCommonReturn(MAGConstant.C_SYSTEM_EXCEPTION, MAGConstant.M_SYSTEM_EXCEPTION); } return QSRentalOutBean.jsonCommonReturn(MAGConstant.C_FAIL, MAGConstant.M_FAIL); } logger.info("返回資料 : " + response); return response; } @Path("QSRentalSendResult") @Produces({ MediaType.TEXT_PLAIN }) @POST public String qsRentalSendResult(@Context HttpServletRequest request) { String response = ""; try { QSRentaResultInBean bean = new QSRentaResultInBean(request); context.setAttribute(QSRentalResultOperation.IN_BEAN, bean); OPCaller.call(QSRentalResultOperation.ID, context); response = (String) context .getAttribute(QSRentalResultOperation.OUT_STRING); } catch (Exception e) { e.printStackTrace(); if (e.getMessage().equals(MAGConstant.C_SYSTEM_EXCEPTION)) { return QSRentalOutBean.jsonCommonReturn(MAGConstant.C_SYSTEM_EXCEPTION, MAGConstant.M_SYSTEM_EXCEPTION); } return QSRentalOutBean.jsonCommonReturn(MAGConstant.C_FAIL, MAGConstant.M_FAIL); } logger.info("返回資料 : " + response); return response; } }
火狐瀏覽器有外掛:HttpRequester方便測試
測試地址:
http://localhost:8080/TESTAPI/TEST/******
慢慢除錯吧