resteasy简介

原文地址:https://my.oschina.net/bigyuan/blog/57409

RestEasy技术说明

简介

RESTEasy

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解压缩。

RESTEasy 项目是 JAX-RS 的一个实现,集成的一些亮点:

  • 不需要配置文件,只要把JARs文件放到类路径里面,添加 @Path 标注就可以了。
  • 完全的把 RESTEeasy 配置作为Seam 组件来看待。
  • HTTP 请求由Seam来提供,不需要一个额外的Servlet。
  • Resources 和providers可以作为 Seam components (JavaBean or EJB),具有全面的Seam injection,lifecycle, interception, 等功能支持。
  • 支持在客户端与服务器端自动实现GZIP解压缩。

名词解释:

JAX-RS: Java API for RESTful Web Services是一个Java编程语言的应用程序接口,支持按照 表象化状态转变 (REST)架构风格创建Web服务Web服务[1]. JAX-RS使用了Java SE 5引入的Java 标注来简化Web服务客户端和服务端的开发和部署。

规范内容

JAX-RS提供了一些标注将一个资源类,一个POJOJava类,封装为Web资源。标注包括:

@Path,标注资源类或方法的相对路径

@GET,@PUT,@POST,@DELETE,标注方法是用的HTTP请求的类型

@Produces,标注返回的MIME媒体类型

@Consumes,标注可接受请求的MIME媒体类型

@PathParam,@QueryParam,@HeaderParam,@CookieParam,@MatrixParam,@FormParam,分别标注方法的参数来自于HTTP请求的不同位置,例如@PathParam来自于URL的路径,@QueryParam来自于URL的查询参数,@HeaderParam来自于HTTP请求的头信息,@CookieParam来自于HTTP请求的Cookie。

@pathparam

  1.   @GET  
  2.     @Path("delProByPNumber/{param}")  
  3.     @Produces("application/json; charset=utf-8")  
  4.     public Response delPro(@PathParam("param") String  pNumber){  
  5.         session.delete("production.delete", pNumber);  
  6.         session.commit();  
  7.         List list=queryAllPro();  
  8.         return Response.status(201).entity(list).build();  
  9.     }  
  10. 访问路径:http://localhost:8888/Invoice/optPro/delProByPNumber/7  
  11. 其中7为传入参数  

@queryParam

  1. @GET  
  2.     @Path("addAcc/parameters")  
  3.     @Produces("application/json; charset=utf-8")  
  4.     public Response addCus(  
  5.             @QueryParam("accname") String accname,  
  6.             @QueryParam("balance"long balance,  
  7.             @QueryParam("department") String   department,  
  8.             @QueryParam("bankname") String bankname,  
  9.             @QueryParam("accnumber"long accnumber,  
  10.             @QueryParam("username") String username  
  11.             ) {  
  12.         Account account=new Account();  
  13.         account.setAccname(accname);  
  14.         account.setBalance(balance);  
  15.         account.setDepartment(department);  
  16.         account.setBankname(bankname);  
  17.         account.setAccnumber(accnumber);  
  18.         account.setUsername(username);  
  19.         session.insert("account.addAcc",account);  
  20.         session.commit();  
  21.   
  22.         return Response.status(201).entity(queryOne(accname)).build();  
  23.     }  
  24. 访问路径:http://localhost:8888/Invoice/optAcc/addAcc/parameters?accname=rr&balance=99999&department=heda&bankname=邮政&accnumber=6666&username=yu  
  25. parameters后面为传入参数  

@FormParam

  1. @Path("/services/hello")  
  2. public class HelloWorldRestService {  
  3.     @POST  
  4.     @Path("getName")  
  5.     public String  getName(@FormParam("fname") String fname,@FormParam("lname") String lname) {  
  6.         String result = "RESTEasy Hello World : " + fname+lname;  
  7.         System.out.println("fname"+fname);  
  8.         return result;  
  9.     }  
  10. }  
  11. 前台form表单提交  
  12.   
  13.   
  14. "Content-Type" content="text/html; charset=UTF-8">  
  15. Insert title here  
  16.   
  17.   
  18.     "http://localhost:8888/Invoice/services/hello/getName" method="POST">  
  19.         First name: "text" name="fname" />  
  20.         Last name: "text" name="lname" />  
  21.         "submit" value="Submit" />  
  22.       
  23.   
  24.  


访问路径:
http://localhost:8888/Invoice/services/hello/getName

    @Context:获取各种类型请求参数
                例如:请求路径为: http://localhost:8080/RestEasy/test/test-context/123;color=balack
                           模版样例为:
[java]  view plain  copy
  1. /** 
  2. * @功能描述: (Context获取Path路径,Matrix参数,PathParam参数) 
  3. */  
  4. @GET  
  5. @Path("test-context/{id}")  
  6. @Produces("text/plain; charset=utf-8")  
  7. public String getContext(@Context UriInfo uriInfo) {  
  8. String path = uriInfo.getPath();  
  9. List lsps = uriInfo.getPathSegments();  
  10. String psString = "";  
  11. for (PathSegment ps : lsps) {  
  12. psString = psString + JSON.toJSONString(ps) + "; ";  
  13. }  
  14. MultivaluedMap map = uriInfo.getPathParameters();  
  15. return "path:" + path + "; lsps:" + psString + "; map:"  
  16. + JSON.toJSONString(map);  
  17. }    "color:#808080;""font-family:'Microsoft YaHei UI';font-size:10.5pt; line-height:1.5">      

你可能感兴趣的:(resteasy简介)