//本文作者:cuifuan
//本文将收录到菜单栏:《Spring全家桶》专栏中
Spring Boot通过提供开箱即用的默认依赖或者转换来补充Spring REST支持。在Spring Boot中编写RESTful服务与SpringMVC没有什么不同。总而言之,基于Spring Boot的REST服务与基于Spring的REST服务完全相同,只是在我们引导底层应用程序的方式上有所不同。
1.REST简短介绍
REST代表Representational State Transfer. 是一种架构风格,设计风格而不是标准,可用于设计Web服务,可以从各种客户端使用.
基于REST的基本设计,其是根据一组动词来控制的操作
创建操作:应使用HTTP POST
查询操作:应使用HTTP GET
更新操作:应使用HTTP PUT
删除操作:应使用HTTP DELETE
作为REST服务开发人员或客户端,您应该遵守上述标准。
2.准备工作
项目的环境工具
SpringBoot 2.0.1.RELEASE
Gradle 4.7
IDEA 2018.2
MySQL5.7
项目结构图
3.开始
下面基于一种方式讲解Restful
对于/user/api HTTP GET来请求获取全部用户
对于/user/api HTTP POST来创建用户
对于/user/api/1 HTTP GET请求来获取id为1的用户
对于/user/api/1 HTTP PUT请求来更新
对于/user/api/1 HTTP DELETE请求来删除id为1的用户
HTTP GET请求/user/api 查询全部
URL:http://localhost:8080/user/api
HTTP GET请求/user/api/65 跟据id查询
URL:http://localhost:8080/user/api/65
HTTP POST请求/user/api 创建用户
URL:http://localhost:8080/user/api
HTTP PUT请求/user/api/65 来更新用户信息
URL:http://localhost:8080/user/api/65
HTTP DELETE请求/user/api/85 来删除id为85的用户
URL:http://localhost:8080/user/api/85
4.业务层及dao层代码
UserService.java 接口
UserServiceImpl.java
UserMapper.java
PageResultBean和ResultBean的代码在GitHub
https://github.com/cuifuan/springboot-demo
实体层和mapper.xml代码都是可以自动生成的,教程导航:
4.理解RESTful
通过上面的编码,如果你已经走通了上面的代码,相信你已经对REST有了大致的掌握,时今当下的前端Client层出不穷,后端接口或许来自不同平台,这时候需要请求一批接口,而RESTful风格的api,使人从请求方式和地址一看就知道是要做什么操作,根据返回code状态就知道结果如何
使用RESTful直接带来的便利:
之前的接口
删除 /user/delete
添加 /user/create
单个查询 /user/queryById
查询全部 /user/queryAll
更新 /user/update
采用RESTful设计API之后 /user/api一个URL地址解决,再也不用跟前端废舌头了,同时GET请求是幂等的,什么是幂等?简单通俗的说就是多次请求返回的效果都是相同的,例如GET去请求一个资源,无论请求多少次,都不会对数据造成创建修改等操作,PUT用来更新数据也是,无论执行多次的都是最终一样的效果
问题:使用PUT改变学生年龄并且这样做10次和做了一次,学生的年龄是相同的,是幂等的,那么如果POST做相同操作,那么它是如何不是幂等的?
答:因为POST请求会在服务端创建与请求次数相同的服务,假如服务端每次请求服务会存在一个密钥,那么这个POST请求就可能不是幂等的,也或许是幂等的,所以POST不是幂等的。
因为PUT请求URL到客户端定义的URL处完整地创建或替换资源,所以PUT是幂等的。 DELETE请求也是幂等的,用来删除操作,其实REST就是相当于一个风格规范。
注意了,GET请求请不要用在delete操作上,你要问我为啥不行,你偏要那么做,其实,整个CRUD操作你也都可以用GET来完成,哈哈,这个只是一个开发的设计风格。
↓↓↓
看完本文有收获?请转发分享给更多人
领取专属 10元无门槛券
私享最新 技术干货