构建RESTful服务
在1.2节中,我们已经对RESTful的架构风格做了简单的介绍。在本节,我们将演示一下 如何使用Spring Boot来快速构建RESTful服务。正如Spring Boot所承诺的那样,搭建一个Spring Boot的应用将是非常快速和简单的。
RESTful服务概述
滚动鼠标轴或单击,开始截长图RESTful服务( 也称为REST Web服务,RESTful Web Serviees)是松耦合的,这特别适用于为客户创建在互联网传播的轻量级的Web服务API。在RESTful服务中,我们经常会将资源以JSON或XML等轻量级的数据格式进行暴露,从而可以方便地让其他REST客户端进行调用。
在Java领域中有非常多的框架,可以帮助我们快速实现RESTful服务,主要分为基于JAX-RS的RESTful服务和基于Spring MVC的RESTful服务。
1.基于JAX-RS的RESTful服务
在JavaEE规范中,针对构建RESTful服务,主要是JAX-RS ( Java API for RESTful WebServices),该规范使Java 程序员可以使用一套固定的接口来开发REST应用,避免了依赖于第三方框架。同时,JAX-RS使用POJO编程模型和基于标注的配置,并集成了JAXB,从而可以有效缩短REST应用的开发周期。截至目前,JAX-RS最新的版本是2.1 ( JSR-370, htp://jcp.org/en/j/r/detail?id=370),并在最新发布的Java EE 8中得到了支持。
伴随着JAX-RS规范的发布,Oracle 同步发布该规范的参考实现Jersey ( ht:p:/ersey.java.net)。JAX-RS的具体实现第三方还包括Apache的CXF ( http://cxf.apache.org/)及JBoss的REST-Easy ( ht:p/resteasy.jboss.org/)等。
2.基于Spring MVC的RESTful服务
Spring MVC框架本身也是可以实现RESTful服务的,只是并未实现JAX-RS规范。在SpringBoot应用中,通常采用SpringMVC来实现RESTful服务。当然,SpringBoot本身也是支持对JAX-RS实现的集成。
Spring MVC对于RESTful的支持,主要通过以下注解来实现。
●@Controller: 声明为请求处理控制器。
●@RequestMapping: 请求映射到相应的处理方法上。该注解又可以细化为以下几种类型:
@GetMapping;
- @PostMapping;
-@PutMapping;
@DeleteMapping;
- @PatchMapping。
@ResponseBody:响应内容的转换,如转换成JSON格式。
@RequestBody:请求内容的转换,如转换成JSON格式。
@RestController:等同于@Controller+@ResponseBody,方便处理RESTful的服务请求。
本书所涉及的案例,采用Spring MVC来实现RESTful服务。
配置环境
为了演示本例子,需要采用如下开发环境:
JDK 8;
Gradle 4.0;
Spring Boot Web Starter 2.0.0.M4。
Spring Boot Web Starter 集成了Spring MVC,可以方便地来构建RESTful Web应用,并使用Tomcat作为默认的内嵌Servlet容器。
需求分析及API设计
在本节,我们将实现-一个简单版本的“用户管理”RESTful服务。通过“用户管理”的API,就能方便地进行用户的增、删、改、查等操作。
用户管理的整体API设计如下:
GET /users:获取用户列表;
●POST /users: 保存用户;
GET /users/:获取用户信息;
PUT /users/:修改用户;
DELETE /users/:删除用户。,
这样,相应的控制器可以定义如下。
项目配置
在之前讲述的“hello-world” 应用的基础上,我们稍作修改来生成-一个新的应用。新的应用称为“spring-boot-rest” 。
由于在build.gradle文件中已经配置了Spring Boot Web Starter,所以并不需要做特别的修改。
编写程序代码
下面进行后台编码实现,编码涉及实体类、仓库接口、仓库实现类及控制器类。
1.实体类
2.仓库接口及实现
用户仓库接口UserRepository如下。
其中,我们用ConcurrentMap userMap 来模拟数据的存储,AtomicLong counter用来生成-一个递增的ID,作为用户的唯一编号。@Repository 注解用于标识UserRepositoryImpl类是一个可注人的bean。
3.控制器类
UserController实现如下。
安装REST客户端
为了测试REST接口,我们需要一款REST客户端。
有非常多的REST客户端可供选择,例如,Chrome浏览器的Postman插件,或者是Firefox浏览器的RESTClient及HttpRequester插件,都能方便用于RESTful API的调试。
这里,笔者就RESTClient及HttpRequester插件的安装,做一下简单的介绍。
为了方便测试RESTAPI,需要- -款 REST客户端来协助我们。由于这里用Firefox 浏览器居多,所以推荐安装RESTClient或HttpRequester插件。当然,你可以根据个人喜好来安装其他软件。
在Firefox安装插件的界面里面输入关键字“restclient",就能看到这两款插件的信息。单击“安装”按钮即可。
用HttpRequester来测试。
在运行程序后,我们可以对ht:/calalhost:8080/users/1接口进行测试。
我们在HttpRequester的请求URL中填写接口地址,然后单击“Submit" 按钮来提交测试请求。
在右侧响应里面,能看到返回JSON数据。图3-2展示了HttpRequester的使用过程。
运行、测试程序
运行程序,项目启动在8080端口。
首先,我们发送GET请求到htp:/ocalhost:8080/users,可以看到,响应返回的是一个空的列表[]。
发送POST请求到htp://ocalhost:8080/users,用来创建-一个用户。请求内容为:
发送成功,我们能看到响应的状态是200,响应的数据为:
我们通过该接口,再创建几条测试数据,并发送GET请求到ht:p/ocalalhost:8080/user,可以看到,响应返回的是-个有数据的列表。
我们通过PUT方法到htp://ocalhost:8080/users/2,来修改id为2的用户信息,修改为如下内容。
发送成功,我们能看到响应的状态是200。我们通过GET方法到ht:/ocalhot:.080/users/r2来查看id为2的用户信息:
可以看到,用户数据已经变更了。
自此,这个简单的“用户管理”的RESTful服务已经全部调试完毕。
本篇文章给大家讲述的是怎样构建RESTful服务,喜欢的朋友可以转发此文关注小编!!
下篇文章给大家介绍SpringBoot的配置详解的内容,大家可以特别关注哈~~~
看完是否有感慨?
领取专属 10元无门槛券
私享最新 技术干货