[原文1] https://www.jianshu.com/p/5f19d9df650f
[原文2] https://www.infoq.cn/article/understanding-restful-style
资源
1、用 URL用来指定一个资源,资源就是服务器上的数据
2、资源地址使用嵌套的结构
3、URL 由名词组成
4、客户端可以与之互动(获取、提交、修改、删除)
操作
客户端通过对服务器上的某个资源使用不同的 HTTP 方法来进行不同的操作:
方法 | 含义 |
GET | 获取资源 |
HEAD | 获取资源概况,响应的HTTP不带body |
POST | 新建资源 |
PUT | 更新资源,提供的是完整的资源数据 |
PUTCH | 更新资源,提供的是部分的需要修改的资源数据 |
DELETE | 删除资源 |
tips:
1、幂等方法
幂等方法是指,对同一个内容进行请求,发出n次的效果与发出1次的效果相同。如 HTTP 方法中的 GET、HEAD、PUT、DELETE 方法。
2、PATCH 是幂等的还是非幂等的
因为PATCH的实现方法,有可能是“提供一个用来替换的数据”,也有可能是“提供一个更新数据的方法,如data++”。后者的话即是不幂等的。
3、安全方法
安全方法是指,对一个内容进行请求,不会造成服务器资源数据的改变
结果
RESTful API 要求充分利用HTTP状态码:
状态码 | 方法 | 含义 |
200 OK | [GET] | 成功返回请求数据 |
201 CREATED | [POST/PUT/PATCH] | 新建或修改数据成功 |
202 ACCEPTED |
[*] | 表示请求已经进入后台排队(异步任务) |
204 NO CONTENT |
[DELETE] | 删除数据成功 |
400 INVALID REQUEST | [POST/PUT/PATCH] | 表示请求有错误 |
401 UNAUTHORIZED | [*] | 表示用户没有权限(token令牌、用户名密码错误) |
403 FOBIDDEN | [*] | 表示用户得到授权,可以访问部分内容,在该页面禁止访问 |
404 NOT FOUND | [*] | 服务器不存在请求的资源数据 |
406 NOT ACCEPTABLE | [GET] | 用户请求的格式不能获取(如请求JSON,但只有XML格式的数据) |
410 GONE | [GET] | 用户请求的资源数据已经被永久删除 |
412 UNPROCESABLE ENTITY | [POST/PUT/PATCH] | 请求创建对象时发生一个验证错误 |
500 INTERNAL SERVAL ERROR |
[*] | 服务器发生错误 |
502 | 网关错误 | |
503 | 服务不可用,服务器暂时过载或维护 | |
504 | 网关超时 |