开发RESTful web Service
来源:互联网 发布:java 小红本 编辑:程序博客网 时间:2024/05/21 22:26
- 应用程序状态和功能被分离到不同资源中。
- 资源是可以定位的通过标准URLs,并且这个URLs可以作为超媒体连接。
- 所有资源可以被http谓词所使用:delete,get,post,put
- 所有资源提供信息通过MIME类型(该类型被HTTP支持)
- 协议是无状态的
- 协议是可缓存的
- 协议是分层的
- 提供一个不一样的URI给每个你希望暴露的资源。
- 在URIs中使用声明:使用nouns突出显示资源是事情而不是动作这件事实。URLs诸如:/ordering隐喻了行为,而/orders隐喻了事情
- get对应的方法应该不去改变任何数据。
- 在应答里使用链接:
- 使服务无状态
- 定义服务将要暴露的资源:通常,一个服务将暴露一个或多个资源,这些资源会组织成一个树,例如:一个驾驶记录服务被组织成三个资源:/license/driverID ,/license/driverID/speedingfines,/license/driverID/parkingfines
- 定义在每个资源上执行的动作,例如:你可能想更新驾驶员地址或者删除停车罚单从一个驾驶员记录中。
- 映射行为到何时的http谓词。
- 根资源类:是服务资源树的入口点,他被装饰(用@path注解),用以定义服务中资源的基准URI。
- 子资源:通过根资源来访问的资源,他们被装饰了@path注解的方法所实现。一个子资源的@path注解定义了相对于基准URI的路径。
package demo.jaxrs.server;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.PathParam;@Path("/customerservice") public class CustomerService{ public CustomerService() { } @GET public Customer getCustomer(@QueryParam("id") String id) { ... } ...}
- 服务资源的URI
- 一个class的方法如何被映射到http谓词上。
- 未处理的路径组件
- 被{}包围的参数指示符:参数指示符可以包括通常的表达式来替换缺省的路径
- javax.ws.rs.DELETE指明了方法映射到DELETE
- javax.ws.rs.GET指明方法映射到GET
- javax.ws.rs.POST指明方法映射到post
- javax.ws.rs.PUT指明方法映射到put
- javax.ws.rs.HEAD指明方法映射到HEAD
- 类必须被@path包装
- 类必须有一个公用的构造器用于运行时被调用
- 至少有一个类方法必须被HTTP谓词注解所包装或者被@path所包装
package demo.jaxrs.server;import javax.ws.rs.DELETE;import javax.ws.rs.GET;import javax.ws.rs.POST;import javax.ws.rs.PUT;import javax.ws.rs.Path;import javax.ws.rs.PathParam;import javax.ws.rs.QueryParam;import javax.ws.rs.core.Response;@Path("/customerservice/") public class CustomerService{ public CustomerService() { ... } @GET public Customer getCustomer(@QueryParam("id") String id) { ... } @DELETE public Response deleteCustomer(@QueryParam("id") String id) { ... } @PUT public Response updateCustomer(Customer customer) { ... } @POST public Response addCustomer(Customer customer) { ... } @Path("/orders/{orderId}/") public Order getOrder(@PathParam("orderId") String orderId) { ... }}
- 必须是public的
- 必须被HTTP方法注解所包装
- 不能有多于一个的实体参数
- 实体参数-实体参数是无注解的,他们的值和request的body对应,一个实体参数可以使任意类型的,所以应用城西得有一个实体提供器。通常是JAXB对象。
- 被注解的参数:被注解的参数使用一个JAX-RS注解来指明参数值是如何映射到请求的。通常,参数值映射的是request URI的一部分。
@POST@Path("disaster/monster/giant/{id}")public void addDaikaiju(Kaiju kaiju, @PathParam("id") String id){ ...}
@POST@Path("disaster/monster/giant/")public void addDaikaiju(Kaiju kaiju, String id){ ...}
- void
- 任何java class:如果是返回javaclass,那么应用程序必然有一个实体提供者。
- 一个Response。
- 一个GenericEntity<T>类型的对象
- 子资源方法-直接实现一个http谓词,被一个注解所包装
- 子资源定位-只想一个实现子资源的类
0 0
- 开发RESTful web Service
- CXF开发RESTful风格的Web Service
- CXF开发RESTful风格的Web Service
- jersey 基于tomcat web service 开发 restful service
- Restful Web Service (1)
- Restful web service (2)
- 什么是RESTful Web Service?
- Restful Web Service
- Web Service RESTful
- springMVC restful web service
- RESTful web service study
- restful web service
- Restful Web Service
- 什么是RESTful Web Service?
- RESTful Web Service
- restful web service
- Restful Web Service
- 构建RESTful Web Service
- 后台启动Activity
- java端RESTful web services的几种实现方式
- linux gzip gunzip
- Android View 事件分发机制 源码解析
- 一:Java 并发和多线程的介绍
- 开发RESTful web Service
- python mysql
- Android ViewGroup事件分发机制
- C++05、初识类和对象
- java 正则表达式
- BZOJ3551: [ONTAK2010]Peaks加强版
- poj2955(简单区间dp)
- NYOJ 三个水杯 题解
- Geekban极客班C++STL与泛型编程 第二周