一、Restfull介绍
参考资料: https://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html
此系列是python框架学习系列,根据相关资料学习整理,本篇是drf框架学习的第一篇。
- REST,即Representational State Transfer的缩写,既”表现层状态转化”。
- RESTful架构:
- 每一个URI代表一种资源;
- 客户端和服务器之间,传递这种资源的某种表现层;
- 客户端通过四个HTTP动词,对服务器端资源进行操作,实现”表现层状态转化”。
(1)、格式
https://api.example.com/v1/zoos
(2)、资源操作类型
GET(SELECT):从服务器获取资源(一项或多项)POST(CREATE):在服务器新建一个资源PUT(UPDATE):在服务器端更新资源(客户端需要提供改变后的完成资源)PATCH(UPDATE):在服务端更新资源(客户端提供改变哪个属性),通常是部分更新DELETE(DELETE):删除资源OPTION:获取资源哪些属性是可以改变的HEAD:获取资源元数据
(3)、样例
GET https://api.example.com/v1/zoos: 列出所有动物园POST https://api.example.com/v1/zoos: 新建一个动物园GET https://api.example.com/v1/zoos/id: 获取某个指定动物园信息PUT https://api.example.com/v1/zoos/id: 更新某个指定动物园信息(提供该动物园全部信息)PATCH https://api.example.com/v1/zoos/id: 更新某个指定动物园信息(提供该动物园部分信息)DELETE https://api.example.com/v1/zoos/id: 删除某个动物园GET https://api.example.com/v1/zoos/id/animal: 列出某个指定动物园的所有动物DELETE https://api.example.com/v1/zoos/id/animals/id:删除某个指定动物园的指定动物
(4)、状态码
200 OK ---[GET]:成功,幂等操作201 CREATED ---[POST/PUT/PATCH]:新建或修改数据成功202 Accept ---[*]:请求进入后台排队204 NO CONTENT ---[DELETE]:用户删除数据成功400 INVALID REQUEST ---[POST/PUT/PATCH]:用户发出的请求错误,服务器没有进行相应处理,此操作幂等401 Unauthorized --[*]:用户没有权限(令牌,账户,密码错误)403 Forbidden ---[*]:用户得到授权,但是访问被禁止406 Not Acceptable ---[GET]:用户请求格式不可得(例如用户请求json,但只有xml)410 Gone ---[GET]: 请求的资源被永久删除422 Unprocesable entity ---[POST/PUT/PATCH]:创建一个对象时,发生验证错误