RESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。REST这个词,是Roy Thomas Fielding 在他2000年的博士论文中提出的。RESTful service是一种架构模式,它是轻量级 web 服务,发挥 HTTP 协议的原生的GET,PUT,POST,DELETE。近几年,随着云服务技术的发展,其简单方便、易于理解和扩展,一举超越 SOAP 协议,成为事实的 Web 服务标准。Web 服务开发及其简单,就是定义接口,利用工具发布服务;客户端也是定义接口,利用工具生成通讯代理;HTTP 协议作为通讯工具。
怎么构建 RESTful Service,有哪几种方式可以构建呢?本文通过 Spring 和 JAX-RS 这两种方式来实现 RESTful Service 服务端。本文代码基本来源与官方文档。项目还是基于 Spring Boot 来开发,因为 RESTful Service 其中一种是 Spring 的方式实现,还有 Spring Boot 真的太方便了。
创建 REST-Service 服务端项目
使用 maven 创建 maven-archetype-quickstart 为原型的项目 REST-Service 。
pom.xml
|
|
model 类
|
|
@XmlRootElement标签用于生成 xml 格式
Spring 风格的 REST
在 com.aidansu.demo.controller 包下创建 CustomerControllerBySpring 类
@是java注解;
@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
@Controller 用于标注控制层组件
@ResponseBody 返回JSON,XML或自定义mediaType内容到页面
JAX-RS 风格的 REST
在 com.aidansu.demo.controller 包下创建 CustomerControllerByCXF 类
JAX-RS 也有自己的标注语义:
@Path 将URL从 “/cxf 路径的请求映射到该接口
@Produces 该接口方法默认返回 xml,我们可以制定为 MediaType.APPLICATION_JSON 返回 json 数据
@GET 这个方法处理 GET 请求
@Path(“/greeting”) 将 “/cxf/greeting” 的请求映射到 greeting 函数调用
@FormParam(“name”) 获取的参数,@DefaultValue(“World”) 可以定义默认返回值
Application 启动类
|
|
运行
Spring 风格的: http://localhost:8080/spring/greeting?name=aidansu
JAX-RS 风格的: http://localhost:8080/services/cxf/greeting?name=aidansu
这里需要注意的是 JAX-RS 风格的 REST 需要在端口号后面添加 /services
本次项目 REST-Service 的项目代码已经放在 github 上,有需要的同学可以下载查看。地址: https://github.com/aidansu/REST-Service
想了解更多关于 RESTful 信息的可以查看最新的官方文档
Spring:https://spring.io/guides/gs/rest-service/
JAX-RS:http://cxf.apache.org/index.html
完!