zoukankan      html  css  js  c++  java
  • JAX-RS介绍——Java API forRESTful WebServices,JAX-RS的目标是Web Services开发(这与HTML Web应用不同)而Spring MVC的目标则是Web应用开发

    JAX-RS

    Java API forRESTful WebServices旨在定义一个统一的规范,使得 Java 程序员可以使用一套固定的接口来开发 REST 应用,避免了依赖于第三方框架。是一个Java编程语言的应用程序接口,支持按照表象化状态转变 (REST)架构风格创建Web服务Web服务。

    与传统的 servlet 模型相比,JAX-RS 提供了一种可行的、更为简便、移植性更好的方式来在 Java 内实现 RESTful 服务。使用注释让您能够轻松提供 Java 资源的路径位置并将 Java 方法绑定到 HTTP 请求方法。一种可移植的数据绑定架构提供了一些本机的 Java 类型支持并允许进行序列化/反序列化处理的完全定制。javax.ws.rs.core.Application 子类的扩展以及 web.xml 内的相应清单表明了用最少的部署描述符配置就能进行轻松部署。

    JAX-RS 的具体实现由第三方提供,例如 Sun 的参考实现 Jersey、Apache 的 CXF 以及 JBoss 的 RESTEasy

    JAX-RS标注

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

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

    @GET,@PUT,@POST,@DELETE,标注方法是用的HTTP请求的类型,分别对应 4 种 HTTP 方法,用于对资源进行创建、检索、更新和删除的操作。

    • 若要创建资源,应该使用 POST 方法;
    • 若要检索某个资源,应该使用 GET 方法;
    • 若要更改资源状态或对其进行更新,应该使用 PUT 方法;
    • 若要删除某个资源,应该使用 DELETE 方法。

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

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

    @PathParam,@QueryParam,@HeaderParam,@CookieParam,@MatrixParam,@FormParam,分别标注方法的参数来自于HTTP请求的不同位置,

      • @PathParam来自于URL的路径,
      • @QueryParam来自于URL的查询参数,
      • @HeaderParam来自于HTTP请求的头信息,
      • @CookieParam来自于HTTP请求的Cookie。
      • @Path("/")   
        public class BookkeepingService {   
            ......   
            @Path("/person/") //资源方法;若无@POST,则为子资源定位器  
            @POST   
            @Consumes("application/json")   
            public Response createPerson(Person person) { //JSON 格式的请求体被自动映射为实体参数person  
                ......   
            }   
          
            @Path("/person/")   
            @PUT   
            @Consumes("application/json")   
            public Response updatePerson(Person person) {   
                ......   
            }   
          
            @Path("/person/{id:\d+}/") //正则表达式  
            @DELETE   
            public Response deletePerson(@PathParam("id")   
            int id) {   
                ......   
            }   
          
            @Path("/person/{id:\d+}/")   
            @GET   
            @Produces("application/json")   
            public Person readPerson(@PathParam("id")   
            int id) {   
                ......   
            }   
          
            @Path("/persons/")   
            @GET   
            @Produces("application/json")   
            public Person[] readAllPersons() { //数组类型的返回值被自动映射为 JSON 格式的响应体——?  
                ......   
            }   
          
            @Path("/person/{name}/")   
            @GET   
            @Produces("application/json")   
            public Person readPersonByName(@PathParam("name")   
            String name) {   
                ......   
        }  

        这是一个示意的例子!

  • 相关阅读:
    【POI 2007】Office 办公楼(BIU)
    【Codeforces #130 Div2】Solutions
    【TopCoder SRM 551 Div2】Solutions
    【POI 2007】Axes of Symmetry 对称轴(osi)
    【HDU 2222】Keywords Search
    【POI 2007】Tetris Attack 正方体大作战(tet)
    【SGU 101】Domino
    【JSOI 2009】游戏 Game
    【SGU 102】Coprimes
    【Codeforces #133 Div2】Solutions
  • 原文地址:https://www.cnblogs.com/bonelee/p/6297198.html
Copyright © 2011-2022 走看看