REST代表Representational State Transfer. 是一种架构风格,设计风格而不是标准,可用于设计Web服务,可以从各种客户端使用.
基于REST的基本设计,其是根据一组动词来控制的操作
-
创建操作:应使用HTTP POST
-
查询操作:应使用HTTP GET
-
更新操作:应使用HTTP PUT
-
删除操作:应使用HTTP DELETE
作为REST服务开发人员或客户端,您应该遵守上述标准。
项目的环境工具
-
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
TTP 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 接口
PageResultBean和ResultBean的代码在GitHub
https://github.com/cuifuan/springboot-demo
通过上面的编码,如果你已经走通了上面的代码,相信你已经对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来完成,哈哈,这个只是一个开发的设计风格。