API接口与DRF快速使用
web开发模式
web开发模式一共有两种:
- 前后端混合开发:一个程序员即要自己写后端,又要写前端。
- 前后端分离:后端人员只写后端,向前端提供接口,前端人员根据接口编写前端。
API接口
api接口是前后端信息交互的媒介,由后端人员编写,前端人员可以向接口发送请求以获取数据。
比如下图是微博的一个api接口:
为了在团队内部形成共识、防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实现规范,而且这种规范能够让后端写的接口,用途一目了然,减少双方之间的合作成本。
RESTful规范
RESTful规范是当前api接口主流认可的规范,是一种定义Web API接口的设计风格,尤其适用于前后端分离的应用模式中。
RESTful一共有10条规范:
-
使用https数据交互,https即是http + tsl/ssl,比http更加安全,交互是加密传输。
-
接口地址中带api标识:
-
接口地址中带版本标识:
主要防止项目更新后旧接口失效,不会把旧接口替换掉。
-
数据即是资源,均使用名词,不要用动词:
-
资源操作由请求方式决定:
- 新增:post请求
- 删除:delete请求
- 修改:put请求
- 获取:get请求
-
地址中带搜索条件:
-
响应中带状态码:
除了http的响应状态码,还应该提供自定义状态码。
-
响应中带错误信息,错误信息用error做key:
-
针对不同请求,服务器向用户返回的结果应该符合以下规范:
-
GET /books:返回资源对象的列表(数组):
[ { 'id':1, 'name':'西游记' }, { 'id':2, 'name':'红楼梦' }, ... ]
-
GET /books/1:返回单个资源对象:
{ 'id':1, 'name':'西游记' }
-
POST /books:返回新生成的资源对象:
{ 'id':3, 'name':'水浒传' }
-
PUT /books/1:返回完整的资源对象
-
PATCH /books/1:返回完整的资源对象
-
DELETE /books/1:返回一个空文档
-
-
响应结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。
{ 'id':'books/1', 'name':'水浒传' }
API接口测试工具
后端人员开发了很多API接口后,因为没有写前端,不好测试,这时候就需要用到API测试工具了,它可以替代浏览器发送请求。
API接口测试工具postman下载:Postman API Platform | Sign Up for Free
使用:
批量管理接口,可以保存后发送给其他人。
序列化反序列化
序列化: 把我们识别的数据转换成指定的格式提供给别人
后端中的大部分数据类型无法被前端识别,想要被前端识别就需要将后端数据序列化。比如python字典类型转成JSON格式数据
反序列化:把别人提供的数据转换/还原成我们需要的格式。
前端提供过来的JSON数据,对于python而言就是字符串,我们需要进行反序列化换成模型类对象,这样才能获取需要的数据。
DRF快速使用
DRF是 djangorestframework 的缩写,它是djagno的一个app(第三方插件),只能用在django框架上。
作用:可以帮助我们快速的写出符合restful规范的接口。
安装:
pip install djangorestframework
DRF和Django的版本有一定的对应关系,django版本过低可能drf最新版不支持,可以减低drf的版本。