首页
学习
活动
专区
工具
TVP
发布

构建RESTful服务:项目配置+编写程序代码+安装+运行、测试程序

构建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的配置详解的内容,大家可以特别关注哈~~~

看完是否有感慨?

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201007A0CP7500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券