- 在序列化与反序列化时,虽然操作的数据不尽相同,但是执行的过程却是相似的,也就是说这部分代码是可以复用简化编写的。
- 在开发REST API的视图中,虽然每个视图具体操作的数据不同,但增、删、改、查的实现流程基本套路化,所以这部分代码也是可以复用简化编写的:
- 增:校验请求数据 -> 执行反序列化过程 -> 保存数据库 -> 将保存的对象序列化并返回
- 删:判断要删除的数据是否存在 -> 执行数据库删除
- 改:判断要修改的数据是否存在 -> 校验请求的数据 -> 执行反序列化过程 -> 保存数据库 -> 将保存的对象序列化并返回
- 查:查询数据库 -> 将数据序列化并返回
Django REST framework可以帮助我们简化上述两部分的代码编写,大大提高REST API的开发速度
Django REST framework 框架是一个用于构建Web API 的强大而又灵活的工具。通常简称为DRF框架 或 REST framework。
DRF框架是建立在Django框架基础之上
特点
- 提供了定义序列化器Serializer的方法,可以快速根据 Django ORM 或者其它库自动序列化/反序列化;
- 提供了丰富的类视图、Mixin扩展类,简化视图的编写;
- 丰富的定制层级:函数视图、类视图、视图集合到自动生成 API,满足各种需要;
- 多种身份认证和权限认证方式的支持;
- 内置了限流系统;
- 直观的 API web 界面;
- 可扩展性,插件丰富
REST是一种标准,restful是一种规范,根据产品需求需要定出一份方便前后端的规范,因此不是所有的标准要求都需要遵循
restful规范:
首先restful是一种软件架构风格或者说是一种设计风格,并不是标准,它只是提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。
就像设计模式一样,并不是一定要遵循这些原则,而是基于这个风格设计的软件可以更简洁,更有层次,我们可以根据开发的实际情况,做相应的改变。
它里面提到了一些规范,例如:
1.restful 提倡面向资源编程,在url接口中尽量要使用名词,不要使用动词
2、在url接口中推荐使用Https协议,让网络接口更加安全
https://www.bootcss.com/v1/mycss?page=3
(Https是Http的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,
因此加密的详细内容就需要SSL(安全套接层协议))
3、在url中可以体现版本号
https://v1.bootcss.com/mycss
不同的版本可以有不同的接口,使其更加简洁,清晰
4、url中可以体现是否是API接口
https://www.bootcss.com/api/mycss
5、url中可以添加条件去筛选匹配
https://www.bootcss.com/v1/mycss?page=3
6、可以根据Http不同的method,进行不同的资源操作
(5种方法:GET / POST / PUT / DELETE / PATCH)
7、响应式应该设置状态码
8、有返回值,而且格式为统一的json格式
9、返回错误信息
返回值携带错误信息
10、返回结果中要提供帮助链接,即API最好做到Hypermedia
如果遇到需要跳转的情况 携带调转接口的URL
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
ret = { code: 1000, data:{ id:1, name:'小强', depart_id:http://www.luffycity.com/api/v1/depart/8/ } }