一、簡介 RESTEasy是JBoss的一個開源項目,提供各種框架幫助你構建RESTful Web Services和RESTful Java應用程式。它是JAX-RS規範的一個完整實現並通過JCP認證。作為一個JBOSS的項目,它當然能和JBOSS應用伺服器很好地集成在一起。但是,它也能在任何運行 ...
一、簡介
RESTEasy是JBoss的一個開源項目,提供各種框架幫助你構建RESTful Web Services和RESTful Java應用程式。它是JAX-RS規範的一個完整實現並通過JCP認證。作為一個JBOSS的項目,它當然能和JBOSS應用伺服器很好地集成在一起。但是,它也能在任何運行JDK5或以上版本的Servlet容器中運行。RESTEasy還提供一個RESTEasy JAX-RS客戶端調用框架。能夠很方便與EJB、Seam、Guice、Spring和Spring MVC集成使用。支持在客戶端與伺服器端自動實現GZIP解壓縮。
二、配置
在WEB-INF/web.xml中配置:
1、通過servlet-mapping配置
1 <web-app>
2 <display-name>Archetype Created Web Application</display-name>
3 <servlet>
4 <servlet-name>Resteasy</servlet-name>
5 <servlet-class>
6 org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
7 </servlet-class>
8 <init-param>
9 <param-name>javax.ws.rs.Application</param-name>
10 <param-value>com.restfully.shop.services.ShoppingApplication</param-value>
11 </init-param>
12 </servlet>
13 <servlet-mapping>
14 <servlet-name>Resteasy</servlet-name>
15 <url-pattern>/*</url-pattern>
16 </servlet-mapping>
17 </web-app>
2、通過ServletContextListener配置
1 <web-app>
2 <listener>
3 <listener-class>
4 org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
5 </listener-class>
6 </listener>
7 <!-- ** INSERT YOUR LISTENERS HERE!!!! -->
8 <servlet>
9 <servlet-name>Resteasy</servlet-name>
10 <servlet-class>
11 org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
12 </servlet-class>
13 </servlet>
14 <servlet-mapping>
15 <servlet-name>Resteasy</servlet-name>
16 <url-pattern>/resteasy/*</url-pattern>
17 </servlet-mapping>
18 </web-app>
3、通過ServletFilter配置
1 <web-app>
2 <filter>
3 <filter-name>Resteasy</filter-name>
4 <filter-class>
5 org.jboss.resteasy.plugins.server.servlet.FilterDispatcher
6 </filter-class>
7 <init-param>
8 <param-name>javax.ws.rs.Application</param-name>
9 <param-value>com.restfully.shop.services.ShoppingApplication</param-value>
10 </init-param>
11 </filter>
12 <filter-mapping>
13 <filter-name>Resteasy</filter-name>
14 <url-pattern>/*</url-pattern>
15 </filter-mapping>
16 </web-app>
4、與Spring集成
1 <web-app> 2 <display-name>Archetype Created Web Application</display-name> 3 <listener> 4 <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> 5 </listener> 6 <listener> 7 <listener-class>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</listener-class> 8 </listener> 9 <servlet> 10 <servlet-name>Resteasy</servlet-name> 11 <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class> 12 </servlet> 13 <servlet-mapping> 14 <servlet-name>Resteasy</servlet-name> 15 <url-pattern>/*</url-pattern> 16 </servlet-mapping> 17 </web-app>
三、用法
1 import javax.ws.rs.DefaultValue; 2 import javax.ws.rs.GET; 3 import javax.ws.rs.HeaderParam; 4 import javax.ws.rs.MatrixParam; 5 import javax.ws.rs.POST; 6 import javax.ws.rs.PUT; 7 import javax.ws.rs.Path; 8 import javax.ws.rs.PathParam; 9 import javax.ws.rs.QueryParam; 10 11 import net.sf.json.JSONArray; 12 13 @Path(value = "/test") 14 // @Consumes(value = "application/*") // 規定傳入的格式 15 // @Produces(value = "application/*") // 規定傳出的格式 16 public class TestAPI { 17 18 @GET 19 @Path(value = "/testGET") // 定義請求路徑 20 public String testGET() { 21 22 return "訪問成功:/testGET"; 23 24 } 25 26 @GET 27 @Path(value = "/{var}/testVar") // 正則表達式定義請求路徑,例如:/a/testVar、/b/testVar 28 public String testVar() { 29 30 return "訪問成功:/{var}/testVar"; 31 32 } 33 34 @GET 35 @Path(value = "/{var:.*}/testVars") 36 public String testVars() { 37 38 return "訪問成功:/{var:.*}/testVars";// 正則表達式定義請求路徑,例如:/a/testVars、/a/b/testVars 39 40 } 41 42 @PUT 43 @Path(value = "/testPathParam/{id}") 44 public String testPathParam(@PathParam(value = "id") String id) { 45 46 return "訪問成功:部分路徑中id = " + id;// 請求路徑中部分路徑映射方法使用的參數,例如/testPathParam/10、/testPathParam/20 47 48 } 49 50 @PUT 51 @Path(value = "/testQueryParam") 52 public String testQueryParam(@QueryParam(value = "id") String id) { 53 54 return "訪問成功:參數中id = " + id;// 請求路徑中參數映射方法使用的參數,例如/testQueryParam?id=10、/testQueryParam?id=20 55 56 } 57 58 @PUT 59 @Path(value = "/testMatrixParam") 60 public String testMatrixParam(@MatrixParam(value = "id1") String id1, @MatrixParam(value = "id2") String id2) { 61 62 return "訪問成功:id1 = " + id1 + " id2 = " + id2;// 請求路徑中傳入參數映射方法使用的參數,例如/testQueryParam;id=10;id=20 63 64 } 65 66 @PUT 67 @Path(value = "/testHeaderParam") 68 public String testHeaderParam(@HeaderParam(value = "Content-Type") String contentType) { 69 70 return "訪問成功:contentType = " + contentType;// 訪問請求頭信息,可以自定義key、value 71 72 } 73 74 @PUT 75 @Path(value = "/testDefaultValue") 76 public String testDefaultValue(@QueryParam(value = "value") @DefaultValue(value = "100") Integer value) { 77 78 return "訪問成功:value = " + value;// 設置預設值 79 80 } 81 82 @POST 83 @Path(value = "/testFormat") 84 // @Consumes(value = "application/json") // 規定傳入的格式 85 // @Produces(value = "application/json") // 規定傳出的格式 86 public JSONArray testFormat(@QueryParam(value = "value") Integer value) { 87 88 JSONArray jsonArray = JSONArray.fromObject(value); 89 90 return jsonArray; 91 92 } 93 94 }