博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Spring Boot中输出REST资源
阅读量:4470 次
发布时间:2019-06-08

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

前面我们我们已经看了Spring Boot中的很多知识点了,也见识到Spring Boot带给我们的各种便利了,今天我们来看看针对在Spring Boot中输出REST资源这一需求,Spring Boot带给我们哪些惊喜呢?最近这些文章是成一个系列的,如果小伙伴还没看前面几篇博客,读懂本文可能会有一些压力,建议对Spring Boot尚不了解的小伙伴先移步这里,已经很了解的小伙伴请忽略。OK,那么废话不多说,开始今天愉快的旅程吧。


关于什么是REST资源,很多小伙伴可能会有一种错觉,觉得地址栏写的干净整洁满足条件的就是RESTful架构,其实不然,关于什么是RESTful架构,给小伙伴们推荐这篇文章看一下,这篇博客带小伙伴们入个门是没问题的,如果还想了解更多关于REST的资料,自行Google吧。


创建工程并添加数据库依赖

当然,我们要从创建一个工程开始,工程的创建方式和一致,不同的是我们选择的依赖不同,这里我们选择JPA和Rest Repositories作为依赖,如下图:

这里写图片描述
OK,Project创建成功之后接下来我们要添加数据库依赖,我这里是继续使用mysql数据库,所以继续添加mysql数据库依赖,如下:

mysql
mysql-connector-java
5.1.40

在application.properties中数据库配置相关属性

这里配置和我们在上文中介绍的配置方式一致,如下:

spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/restspring.datasource.username=rootspring.datasource.password=123456spring.jpa.hibernate.ddl-auto=updatespring.jpa.show-sql=truespring.jackson.serialization.indent_output=true

和我们在上文中介绍的配置方式一模一样,这里的东西如果小伙伴有不理解的可以参考这篇博客,我在这里不再赘述。

创建实体类

@Entitypublic class Person {
@Id @GeneratedValue private Long id; private String name; private Integer age; private String address; public Person() { } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Person(Long id, String name, Integer age, String address) { this.id = id; this.name = name; this.age = age; this.address = address; }}

实体类也是和上文介绍的一模一样,不再赘述。做好这些操作之后,运行我们的Project就可以在数据库中生成相应的表了,为了方便我们测试,我写了个简单的方法用来批量生成sql插入语句,方便我们后面做测试用,如下:

public class Test {    public static void main(String[] args) {        String[] addrss = new String[]{
"西安", "北京", "郑州", "上海", "武汉", "长沙", "广州", "贵阳", "柳州", "咸阳", "蓝田", "渭南"}; String[] names1 = new String[]{
"赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈"}; String[] names2 = new String[]{
"强", "亚", "哲", "凡", "路", "举", "昕", "科", "武", "田"}; Random random = new Random(); for (int i = 0; i < 100; i++) { System.out.println("insert into person(address,name,age) values('" + addrss[random.nextInt(addrss.length)] + "','" + names1[random.nextInt(names1.length)]+ names2[random.nextInt(names2.length)] + "','" + (20 + random.nextInt(70)) + "');"); } }}

运行该方法生成100条数据库插入语句,拷贝到数据库管理器中执行即可。

创建实体类的Repository

这个也和上文()中介绍的一模一样,而且还简单了许多,只提供了一个方法,如下:

public interface PersonRepository extends JpaRepository
{
List
findByNameStartsWith(@Param("name") String name);}

OK,做完这一切我们就可以测试了。不对,等等,我好像什么都没干呀,完全就是普通的JPA操作呀,这就是Spring Boot的便利之处,你是什么都不用干,直接测试你的Project吧。

测试

测试工具安装

REST测试工具多种多样,firefox和chrome上都有相应的插件,我这里以firefox上的RESTClient插件为例,我们先来看看安装过程:

这里写图片描述
这里写图片描述
工具安装对于各位智商杠杠滴的程序员来说应该没有什么难度,安装成功之后在浏览器的工具栏中会多出一个图标,如下:
这里写图片描述
点击该按钮,打开测试页面:
这里写图片描述

获取所有数据

在地址栏中访问获取所有数据,如下图:

这里写图片描述
在Response Body (Raw)一栏中我们可以看到访问结果。

根据id获取单条数据

在地址栏中访问获取id为1的数据,如下图:

这里写图片描述

查询数据

如果我们想调用刚刚自定义的PersonRepository中的方法来执行查询操作,那么只需对该方法稍作修改将之暴露为REST资源即可,如下:

public interface PersonRepository extends JpaRepository
{
@RestResource(path = "nameStartsWith",rel = "nameStartsWith") List
findByNameStartsWith(@Param("name") String name);}

然后假设我们需要查询所有姓钱的人,那么在地址栏输入如下地址:http://localhost:8080/persons/search/nameStartsWith?name=钱,访问结果如下:

这里写图片描述

分页查询

在地址栏输入进行分页查询,其中1表示第1页,3表示每页3条数据,查询结果如下:

这里写图片描述
在查询结果中,系统还给我们返回了首页地址、上页地址、下页地址以及尾页地址,如下:
这里写图片描述

排序查询

比如按照age字段从大到小排序,在地址栏输入这个,查询结果如下:

这里写图片描述

向数据库添加数据

上面我们演示的所有请求都是get请求,向数据库添加数据我们需要通过post请求,修改请求方式,然后在请求body中输入要提交的json字符串。同时我们还要告诉服务端,客户端提交的数据格式是json,所以在RESTClient工具的头部点击Headers,选择自定义头信息,如下:

这里写图片描述
然后添加Content-Type,如下:
这里写图片描述
OK,添加完头信息之后,就可以发起请求了,请求地址如下:,访问结果如下:
这里写图片描述
如此之后,我们就向数据库中添加了一条数据了。

数据更新

通过put请求我们可以更新数据,假设我要更新id为99的数据,输入如下地址可以更新,在请求body中传入修改参数,结果如下:

这里写图片描述
修改成功之后,数据库中该条数据随即变化。

数据删除

通过delete请求我可以删除一条数据,假设我要删除id为55的数据,先将请求改为delete请求,然后在地址栏输入如下地址,结果如下:

这里写图片描述

这样,id为55的数据就被删除了。

定制

上面我们说了基本的请求,默认情况下我们访问所有数据的请求路径是,如果想定制,我们可以在application.properties中进行配置,配置方式如下:

spring.data.rest.base-path=/api

这样,我的访问路径就变为了.默认情况下我们是在实体类后面添加一个s形成路径,比如这里我们的实体类是Person,访问路径就是persons,有的时候我们需要对这个路径进行定制,这个可以在PersonRepository类中通过注解进行修改,如下:

@RepositoryRestResource(path = "people")public interface PersonRepository extends JpaRepository
{
@RestResource(path = "nameStartsWith",rel = "nameStartsWith") List
findByNameStartsWith(@Param("name") String name);}

OK ,经过上面两个定制操作之后,我的访问路径就变成这样了,访问结果如下:

这里写图片描述

简单吧。

本文案例下载:

本文案例GitHub地址

更多Spring Boot资料请移步这里

以上。

参考资料:

《JavaEE开发的颠覆者 Spring Boot实战》第八章

转载于:https://www.cnblogs.com/lenve/p/7530979.html

你可能感兴趣的文章
HDU 1199 - Color the Ball 离散化
查看>>
[SCOI2005]骑士精神
查看>>
Hibernate原理解析-Hibernate中实体的状态
查看>>
六时车主 App 隐私政策
查看>>
C语言常见问题 如何用Visual Studio编写C语言程序测试
查看>>
Web用户的身份验证及WebApi权限验证流程的设计和实现
查看>>
hdu 2098 分拆素数和
查看>>
ECMAScript6-let与const命令详解
查看>>
iOS 使用系统相机、相册显示中文
查看>>
什么是敏捷设计
查看>>
.NET中栈和堆的比较
查看>>
【莫队】bzoj 3781,bzoj 2038,bzoj 3289
查看>>
如何优化limit
查看>>
几种常用数据库字段类型查询语句
查看>>
提高效率必须改掉的7种习惯
查看>>
Java判断语句中判断条件的执行顺序
查看>>
Windows平台下tomcat+java的web程序持续占cpu问题调试
查看>>
OO第四次博客作业!
查看>>
HDU 吉哥系列故事——完美队形II 騰訊馬拉松初賽第二輪D題
查看>>
[转]SQL Server 性能调优(io)
查看>>