RESTful基本特点
- 无状态 比如websocket这种连接,断开连接的是有状态的
- 面向资源,没有动词
- http动词 get 查看, post 创建, put 更新, patch 部分更新,delete 删除.
- 超媒体即应用状态引擎
好用:面向对象(资源),如增删改查.
不好用: 面向过程,如登陆.
restful6个约束和最佳实践
-
client-server
前后端分离 -
无状态
请求独立(jwt)
3.分层系统
代码分层
- 统一接口(核心)
数据统一
api自发现
5.可缓存
6.按需代码,不重要
绝大部分后端都不会100%满足这6个约束.
restful是一种架构风格,但它绝不是一种代码标准,实现业务是王道.
restful成熟度模型
level0
只要有api
通过http传输
level1
面向资源
level2
http动词
level3
超媒体即自我发现引擎
api自我发现
超媒体=多媒体+超文本
好处:前端程序员不用把url写入配置文件,不用hard code url字符串,不用再代码中做url的拼接.
用不用restful,要根据项目的实际情况决定,用哪个成熟的要看业务需求.
http HEAD请求
HEAD与GET类似,但是没有响应主题
检查缓存
探测资源是否存在
http方法的安全性和幂等性
安全性
- 不会产生副作用,不会改变当前资源状态.
- 包括那些可以被缓存对资源无损加载的方法
比如:get请求head请求
幂等性
- 同样的操作不管经历多少次调用,返回的数据,产生的效果都是一样的
PUT VS PATCH
PUT: 对某个资源所有的字段进行更新
Patch: 对某个资源所选的某几个字段部分更新.