01 drf源码剖析之restful规范
01 restful规范
1. 什么是restful规范
-
restful是一套规则,是程序间进行数据传输的一种约定
-
REST 与技术无关,代表的是一种软件架构风格,REST 是 Representational State Transfer 的简称,中文翻译为"表征状态转移"
-
REST 从资源的角度来审视整个网络,它将分布在网络中某个节点的资源通过 URL 进行标识,客户端应用通过 URL 来获取资源的表征,获得这些表征使这些应用转变状态
-
所有的数据,不过是通过网络获取的还是操作(增删查改)的数据,都是资源,将一切数据视为资源是 REST 区别与其他架构风格的最本质属性
-
对于 REST 这种面向资源的架构风格,有人提出一种全新的结构理念,即:面向资源架构(ROA:Resource Oriented Architecture)
2.restful规范详细
-
建议用https代替http
- 为了保证数据的安全
-
在url中添加api标识
-
这样看到url就知道是一个api,建议放在域名后面,这样不会存在跨域问题
-
推荐下面写法,因为他不会存在跨域的问题
http://www.lbzhk.com/api/....
当然也可以这么写
http://api.lbzhk.com/....
-
-
在接口中体现版本信息
-
方便于版本的迭代,
-
示例:
http://www.lbzhk.com/api/v1....
-
注意:版本还可以放在请求头中
http://www.lbzhk.com/api/ accept: ...
-
-
一般资源都用名词
-
restful也称面向资源编程,视网上的一切都是资源
-
示例:
http://www.lbzhk.com/api/user/
-
-
如果要添加一些筛选条件,可以写在url中
-
示例:
http://www.lbzhk.com/api/user/?page=1&type=9
-
-
根据method不同做不同的操作
- get,获取数据
- post,添加
- put,更新
- patch,局部更新
- delete,删除
- options,预检
-
返回给用户状态码
- 200,成功
- 300,301永久重定向/302临时重定向
- 400,403拒绝访问/404找不到
- 500,服务端代码错误
-
对不同请求返回不同的数据
-
示例:
GET http://www.lbzhk.com/api/user/ # 返回资源对象的列表(数组) [ {'id':1,'name':'张三','age':19}, {'id':1,'name':'李四','age':19}, ] POST http://www.lbzhk.com/api/user/ # 返回新生成的资源对象 {'id':1,'name':'张三','age':19} GET http://www.lbzhk.com/api/user/2/ # 读取资源时,传入标识符(identity),服务端返回标识符指定的单个资源对象 {'id':2,'name':'张三','age':19} PUT http://www.lbzhk.com/api/user/2/ # 返回完整的资源对象 {'id':2,'name':'张三','age':19} PATCH https//www.lbzhk.com/api/user/2/ # 返回被修改的属性 {'id':2,'name':'张三','age':19} DELETE https//www.lbzhk.com/api/user/2/ # 返回一个204状态码和空响应体或者返回空
-
-
.如果有异常返回错误信息
-
示例:
{ error: "Invalid API key" }
-
-
对于下一个请求要返回一个接口
-
示例:
{ 'id':2, 'name':'alex', 'age':19, 'depart': "http://www.lbzhk.com/api/user/30/" }
-