rest和jax-rs知识介绍

上传人:第*** 文档编号:32695595 上传时间:2018-02-12 格式:DOC 页数:15 大小:278.95KB
返回 下载 相关 举报
rest和jax-rs知识介绍_第1页
第1页 / 共15页
rest和jax-rs知识介绍_第2页
第2页 / 共15页
rest和jax-rs知识介绍_第3页
第3页 / 共15页
rest和jax-rs知识介绍_第4页
第4页 / 共15页
rest和jax-rs知识介绍_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《rest和jax-rs知识介绍》由会员分享,可在线阅读,更多相关《rest和jax-rs知识介绍(15页珍藏版)》请在金锄头文库上搜索。

1、RESTREpresentational State Transfer;代表性状态传输、具象状态传输REST 定义了应该如何正确地使用 Web 标准,例如 HTTP 和 URI。REST 并非标准,而是一种开发 Web 应用的架构风格,可以将其理解为一种设计模式。REST 关键原则1、为所有“事物”定义 ID含义:在 Web 中,代表 ID 的统一概念是:URI。URI 构成了一个全局命名空间,使用 URI 标识你的关键资源意味着它们获得了一个唯一、全局的 ID。使用 URI 标识所有值得标识的事物,特别是应用中提供的所有“ 高级”资源,无论这些资源代表单一数据项、数据项集合、虚拟亦或实际的对

2、象还是计算结果等。好处:使用唯一、全局统一的命名规则的好处,既适用于浏览器中的 Web 应用,也适用于机对机(machine-to-machine,m2m )通信。2、将所有事物链接在一起含义:任何可能的情况下,使用链接指引可以被标识的事物(资源)。正式描述:“超媒体被当作应用状态引擎( Hypermedia as the engine of application state)”,有时简写为 HATEOAS。这个描述的核心是超媒体概念,换句话说:是链接的思想好处:超媒体原则还有一个更重要的方面 应用“状态”。简而言之,实际上服务器端为客户端提供一组链接,使客户端能通过链接将应用从一个状态改变

3、为另一个状态。目前,只需要记住:链接是构成动态应用的非常有效的方式.html view plain copy print?1. 2. 23 3. 4. 5. 6. 7. 3、使用标准方法含义:浏览器知道如何去处理 URI 的原因在于所有的资源都支持同样的接口,一套同样的方法集合。标准方法集合包含 GET、POSTPUT、DELETE、HEAD 和 OPTIONS为使客户端程序能与你的资源相互协作,资源应该正确地实现默认的应用协议(HTTP),也就是使用标准的 GET、PUT、POST 和 DELETE 方法。好处:它使你的应用成为 Web 的一部分 应用程序为 Web 变成 Internet

4、上最成功的应用所做的贡献,与它添加到 Web 中的资源数量成比例。采用 RESTful 方式,一个应用可能会向Web 中添加数以百万计的客户 URI统一接口也使得所有理解 HTTP 应用协议的组件能与你的应用交互。通用客户程序(generic client)就是从中受益的组件的例子,例如 curl、wget 、代理、缓存、HTTP 服务器、网关还有 Google、Yahoo!、MSN 等等。4、资源多重表述?含义:客户程序如何知道该怎样处理检索到的数据,比如作为 GET 或者 POST 请求的结果?原因是,HTTP 采取的方式是允许数据处理和操作调用之间关系分离的。针对不同的需求提供资源多重表

5、述好处:如果你为你的资源提供 HTML 和 XML 两种表述方式,那这些资源不仅可以被你的应用所用,还可以被任意标准 Web 浏览器所用5、无状态通信含义:REST 要求状态要么被放入资源状态中,要么保存在客户端上。或者换句话说,服务器端不能保持除了单次请求之外的,任何与其通信的客户端的通信状态。这样做的最直接的理由就是可伸缩性 如果服务器需要保持客户端状态,那么大量的客户端交互会严重影响服务器的内存可用空间好处:无状态约束使服务器的变化对客户端是不可见的,因为在两次连续的请求中,客户端并不依赖于同一台服务器。JAX-RSJava API forRESTful WebServices 旨在定义

6、一个统一的规范,使得 Java 程序员可以使用一套固定的接口来开发 REST 应用,避免了依赖于第三方框架。是一个 Java 编程语言的应用程序接口,支持按照表象化状态转变 (REST)架构风格创建 Web 服务 Web 服务。与传统的 servlet 模型相比,JAX-RS 提供了一种可行的、更为简便、移植性更好的方式来在 Java 内实现 RESTful 服务。使用注释让您能够轻松提供 Java 资源的路径位置并将 Java 方法绑定到 HTTP 请求方法。一种可移植的数据绑定架构提供了一些本机的 Java 类型支持并允许进行序列化/ 反序列化处理的完全定制。javax.ws.rs.cor

7、e.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 方法,用于对资源进行创建、检索、更新和删除的操作。 若要创建资源,应该使用 POS

8、T 方法; 若要检索某个资源,应该使用 GET 方法; 若要更改资源状态或对其进行更新,应该使用 PUT 方法; 若要删除某个资源,应该使用 DELETE 方法。Produces,标注返回的 MIME 媒体类型Consumes,标注可接受请求的 MIME 媒体类型PathParam,QueryParam,HeaderParam,CookieParam,MatrixParam,FormParam,分别标注方法的参数来自于 HTTP 请求的不同位置, PathParam 来自于 URL 的路径, QueryParam 来自于 URL 的查询参数, HeaderParam 来自于 HTTP 请求的头

9、信息, CookieParam 来自于 HTTP 请求的 Cookie。Resource 类和 Resource 方法Web 资源作为一个 Resource 类来实现,对资源的请求由 Resource 方法来处理。Resource 类或 Resource 方法被打上了 Path 标注,Path 标注的值是一个相对的 URI 路径,用于对资源进行定位,路径中可以包含任意的正则表达式以匹配资源。和大多数 JAX-RS 标注一样,Path 标注是可继承的,子类或实现类可以继承超类或接口中的 Path 标注。Resource 类是 POJO,使用 JAX-RS 标注来实现相应的 Web 资源。Reso

10、urce 类分为根 Resource 类和子 Resource 类,区别在于子 Resource 类没有打在类上的 Path 标注。Resource 类的实例方法打上了Path 标注,则为 Resource 方法或子 Resource 定位器,子 Resource 定位器上没有任何 GET、POST、PUT、DELETE 或者自定义的 HttpMethodjava view plain copy print?1. Path(/) 2. public class BookkeepingService 3. . 4. Path(/person/) /资源方法;若无POST,则为子资源定位器 5.

11、POST 6. Consumes(application/json) 7. public Response createPerson(Person person) /JSON 格式的请求体被自动映射为实体参数 person 8. . 9. 10. 11. Path(/person/) 12. PUT 13. Consumes(application/json) 14. public Response updatePerson(Person person) 15. . 16. 17. 18. Path(/person/id:d+/) /正则表达式 19. DELETE 20. public Re

12、sponse deletePerson(PathParam(id) 21. int id) 22. . 23. 24. 25. Path(/person/id:d+/) 26. GET 27. Produces(application/json) 28. public Person readPerson(PathParam(id) 29. int id) 30. . 31. 32. 33. Path(/persons/) 34. GET 35. Produces(application/json) 36. public Person readAllPersons() /数组类型的返回值被自动映

13、射为 JSON 格式的响应体 ? 37. . 38. 39. 40. Path(/person/name/) 41. GET 42. Produces(application/json) 43. public Person readPersonByName(PathParam(name) 44. String name) 45. . 46. 注意:1. Subresources Locators 是指一个指定了Path annotation,但未指定 HttpMethod的 annotation2. 最好是在一个 interface 中定义这个标注,然后实现这个 interfaceResour

14、ce 方法参数类型、返回类型Resource 方法合法的参数类型包括:1. 原生类型 在客户端如何发送原生类型?可否发送 JSON 类?2. 构造函数接收单个字符串参数,或者包含拥有一个 static 的 valueOf(String)方法3. List,Set,SortedSet (T 为以上的 2 种类型)4. 用于映射请求体的实体参数Resource 方法合法的返回值类型包括:1. void:状态码 204 和空响应体2. Response:Response 的 status 属性指定了状态码,entity 属性映射为响应体java view plain copy print?3.1. return Response.status(Status.OK).entity(JsonUtils.toString(result).build(); 1. GenericEntity:GenericEntity 的 entity 属性映射为响应体,entity 属性为空则状态码为 204,非空则状态码为 2002. 其它类型:返回的对象实例映射为响应体,实例为空则状态码为 204,非空则状态码为 200对于错误处理,Resource 方法可以抛出非受控异常 WebApplicationException 或者返回包含了适当的错误码集合的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号