RESTful
实习中经常会听到他们说前后端分离,后端会给前端接口文档,根据这份文档前后端各自进行开发,然后就发现HTTP请求的动词很统一,不外乎就是“GET、POST、DELETE、PUT”,在请教了小姐姐小哥哥之后发现组内开发的接口风格叫RESTful,所以就来学习一下。
前端的设备多种多样,为了方便不同的前端设备和后端进行通信,必须有一种统一的机制。目前最流行的是restful风格接口。
RESTful架构是目前最流行的一种互联网软件架构。
符合以下三点要求的便是RESTful架构
1、每一个URI代表一种资源
2、客户端和服务器之间,传递这种资源的表现层
3、客户端通过HTTP动词对服务器端资源进行操作,实现“表现层状态转化”
HTTP动词
GET 从服务器取资源
POST 在服务器新建一个资源
PUT 更新资源(客户端提供完整资源)
PATCH 在服务器更新资源(只提供可改变的属性)
DELETE 从服务器删资源
HEAD 获取资源的元数据
OPTIONS 获取信息(只关于那些客户端可改变的)
状态码
200 OK - [GET]:服务器成功返回用户请求的数据
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功
202 Accepted - []:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作
401 Unauthorized - []:表示用户没有权限(令牌、用户名、密码错误)
403 Forbidden - [] 表示用户得到授权(与401错误相对),但是访问是被禁止的
404 NOT FOUND - []:用户发出的请求针对的是不存在的记录,服务器没有进行操作
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功
restful风格接口的好处:接口名称相同,请求method,通过 RequestMethod.GET/POST/PUT/DELETE来区别,就可以实现增删改查。
写在最后:
这种风格的接口很统一,对于前端来讲非常方便。
目前我对restful的理解就这么多啦,有不当之处还请大家多多指正!
参考文档:
[1] restful最佳实践
[2] restful
[3] restful API设计