Rest应用及其常规实现
发布日期:2021-06-20 05:37:32 浏览次数:9 分类:技术文章

本文共 2208 字,大约阅读时间需要 7 分钟。

目录

前言

知其然也要知其所以然,写代码更是如此。在本周开发过程中,很多开发基本上都是搬砖,同事实现过的功能自己再实现一边,即使是新功能自己也可以根据官方参考文档实现新的功能。飘飘然后必败:一直使用Spring框架进行Rest应用开发,第一次看到公司代码里面的javax.ws.rs竟然猜测是walle自己开发的一套注解。。。基于错误的思想,在开发新的文件上传功能是遇到了困难。特总结rest应用及其实现-- 在我遇到未知不知所措时,师兄一顿操作帅呆了我:先进行服务器登陆查看错误日志,发现没有。。。直接在线debug,查看注解是什么技术进行支持(glass fish 和javax.ws.rs)定位后查看除了都有哪些注解可以用,不能确定的情况下 包名 + 错误 直接定位到官方教程。

REST 简介

REST 表征状态转移(Representational State Transfer)

SOAP:简单对象访问协议(Simple Object Access Protocol)
REST 是英文 Representational State Transfer 的缩写,有中文翻译为“具象状态传输”。REST 这个术语是由 Roy Fielding 在他的博士论文 《 Architectural Styles and the Design of Network-based Software Architectures 》中提出的。REST 并非标准,而是一种开发 Web 应用的架构风格,可以将其理解为一种设计模式。REST 基于 HTTP,URI,以及 XML 这些现有的广泛流行的协议和标准,伴随着 REST,HTTP 协议得到了更加正确的使用。

相较于基于 的 ,REST 模式提供了更为简洁的实现方案。目前,越来越多的 Web 服务开始采用 REST 风格设计和实现,JAX-RS 定义的 API 位于 javax.ws.rs 包中。JAX-RS 的具体实现由第三方提供,例如 Sun 的参考实现 Jersey、Apache 的 CXF 以及 JBoss 的 RESTEasy。

JAX-RS – Java API for RESTful Web Services

Java EE 6 引入了对 JSR-311 的支持。JSR-311(JAX-RS:Java API for RESTful Web Services)旨在定义一个统一的规范,使得 Java 程序员可以使用一套固定的接口来开发 REST 应用,避免了依赖于第三方框架。同时,JAX-RS 使用 POJO编程模型和基于标注的配置,并集成了 JAXB,从而可以有效缩短 REST 应用的开发周期。

##参数标注
JAX-RS 中涉及 Resource 方法参数的标注包括:@PathParam、@MatrixParam、@QueryParam、@FormParam、@HeaderParam、@CookieParam、@DefaultValue 和 @Encoded。这其中最常用的是 @PathParam,它用于将 @Path 中的模板变量映射到方法参数,模板变量支持使用正则表达式,变量名与正则表达式之间用分号分隔。例如对 清单 1中所示的 BookkeepingService 类,如果使用 Get 方法请求资源”/person/jeffyin”,则 readPersonByName 方法将被调用,方法参数 name 被赋值为”jeffyin”;而如果使用 Get 方法请求资源”/person/123”,则 readPerson 方法将被调用,方法参数 id 被赋值为 123。要了解如何使用其它的参数标注 , 请参考 JAX-RS API。

JAX-RS 规定 Resource 方法中只允许有一个参数没有打上任何的参数标注,该参数称为实体参数,用于映射请求体。eg:

@POST    @Path("queryList")    public void queryList(JSONObject param) {

标注包括:

  • @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。

JAX-RS的实现

Apache CXF, 开源的Web服务框架。

, 由Sun提供的JAX-RS的参考实现。
RESTEasy, JBoss的实现。
Restlet, 由Jerome Louvel和Dave Pawson开发,是最早的REST框架,先于JAX-RS出现。
Apache Wink, 一个Apache软件基金会孵化器中的项目,其服务模块实现JAX-RS规范

附录:

转载地址:https://blog.csdn.net/h2453532874/article/details/95801848 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:MySQL JSON的支持
下一篇:优雅的参数检验 — guava的Preconditions

发表评论

最新留言

很好
[***.229.124.182]2024年04月16日 13时35分42秒