resteasy 搭建webservice 返回List类型数据如何实现?
发布网友
发布时间:2022-04-11 22:33
我来回答
共1个回答
热心网友
时间:2022-04-12 00:02
网上有很多rest文章,看到最后都云里雾里的,不知道具体的实现,刚刚找到一篇比较实用的文章,转过来:http://lv78.blog.163.com/blog/static/18970204820115216420298/
REST简介
REST(Representational State Transfer)中文解释为“表述性状态转移”,是2000年由Roy Fielding 在他的博士论文 《 Architectural Styles and the Design of Network-based Software Architectures》中提出的架构风格。REST是基于HTTP,URI,XML,JSON等协议或者标准,它促使了http协议的更加正确使用。相对于SOAP和WSDL提供的web service方案,REST显得更加简单。
基于REST的web service应该遵守一些基本的原则:
1:资源的识别:系统中的每一个对象或是资源都可以通过一个唯一的 URI 来进行寻址,URI 的结构应该简单、可预测且易于理解,比如定义目录结构式的 URI。
2:协议: 以遵循 HTTP/1.1 RFC2616 所定义的协议的方式显式地使用 HTTP 方法,建立创建、检索、更新和删除(CRUD:Create, Retrieve, Update and Delete)操作与 HTTP 方法之间的一对一映射:
POST: 在服务器上创建资源;
GET: 检索某个资源;
PUT: 更改资源状态或对其进行更新;
DELETE: 删除某个资源。
3:自描述的消息:URI 所访问的每个资源都可以使用不同的形式加以表示(比如 XML 或者 JSON),具体的表现形式取决于访问资源的客户端,客户端与服务提供者使用一种内容协商的机制(请求头与 MIME 类型)来选择合适的数据格式,最小化彼此之间的数据耦合。
Java Rest Framework
1:Restlet: 出现的较早,在JAX-RS之前就有了,支持的框架较多,但是使用起来不够简单。
2:CXF: 是Celtix 和 XFire合并后的项目,支持SOAP,WSDL,JSR-WS,REST,配置较为复杂,侵入性太强,单纯构建restful web service显得较重。
3:Resteasy: 是jboss下面一个对JAX-RS(JSR311)的一个实现,使用起来简单方便,支持spring,oauth等。
4:[url=https://jersey.dev.java.net/]Jersey[/url]: 是sun公司对JAX-RS(JSR311)的一个参考实现,不过现在在逐渐的摆脱参考实现的阴影,逐渐渗透到企业应用,和sun的glassfish和netbeans结合使用可以很方便的构建restful web service。
实现restful web service使用CXF和restlet都显得太重,使用Jersey总是觉得这个是官方的参考实现,看看Easyrest的文档还是较为全面,所以选择Easyrest来作为rest api的java框架。
注:JSR 311 或 JAX-RS(用于 RESTful Web Services 的 Java API)的提议开始于 2007 年,1.0 版本到 2008 年 10 月定稿。目前,JSR 311 版本 1.1 还处于草案阶段。该 JSR 的目的是提供一组 API 以简化 REST 样式的 Web 服务的开发。
RESTEasy的一些功能点
实现中遵守 JAX-RS 规范
需要 JDK 5 或者以上版本的应用服务器中运行
支持在应用服务器中作 junit 测试
使用annotations更简单的写客户端应用 (JAX-RS 只定义了服务器端的)
支持HTTP 1.1缓存语义包括缓存。
支持多种格式: XML, JSON, YAML, Fastinfoset, Multipart, XOP, Atom, etc.
支持JAXB 和XML, JSON, Jackson, Fastinfoset, and Atom 互转
支持GZIP ,JBoss Web, Tomcat 6, and Servlet 3.0,EJB, Seam, Guice, Spring, and Spring MVC integration
使用Resteasy构建 restful web service
把对图书馆的书籍的操作作为例子,讨论使用resteasy构建restful web service的方法。中间包括pom.xml的配置,web.xml的配置,相关上下文类的实现,核心类中到一些方法。
1:创建工程,配置pom.xml
mvn archetype:create -DgroupId=com.longtask.rest.easyrest -DartifactId=easyrest -DarchetypeArtifactId=maven-archetype-webapp
mvn eclipse:eclipse