what‘s the RESTful
RestFramework是一个能快速为我们供给API接口,便利我们编程的框架。API是后端编程人员写的,为了让前端拿数据的一个接口,凡是就是以url的形式存在。
每个项目总有第一小我私家做根本构架,这个时候就不是仅仅实现一个API就OK了,需要考虑更多的工作,包孕
统一的异常措置惩罚惩罚
API权限
统一的参数校验
缓存如何可以做的更简单统一
认证
统一的盘问过滤
代码分层
RestFramework能很好的帮我们做这些工作。
了解RestFramework之前我们首先要知道什么是REST:
REST是一种标准,restful是一种规范,按照产品需求需要定出一份便利前后真个规范,与协议(如HTTP协议)差别,不是所有的标准要求都需要遵循。
REST与技术无关,代表的是一种软件架构气势派头,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”
REST从资源的角度类审视整个网络,它将漫衍在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用改变状态
所有的数据,不过是通过网络获取的还是操纵(增删改查)的数据,,都是资源,将一切数据视为资源是REST区别与其他架构气势派头的最素质属性
对付REST这种面向资源的架构气势派头,有人提出一种全新的布局理念,即:面向资源架构(ROA:Resource Oriented Architecture)
API设计规范首先我们要知道,API并不是必需的,如果整个项目只有你一小我私家或者很少的人完成,完全可以直接用Django的模板引擎衬着发送到前端后直接操纵。API的使用主要是为了解决多人开发,出格是前后端疏散的情况。因为前端人员在制作页面时一定会需要向后端要数据,但是假如前后端是疏散的,就不能用Django的render了,大部分情况前端会用ajax发送请求,后端人员则发送JSON字符串给前端,前端再反序列化后进行使用。这个时候其实我们设计一套API出来,就能使我们的任务轻松很多。所以,RestFramework就应运而生了。
API与用户的通信协议,素质上是HTTPs协议。
使用RestFramework设计API有一套规范,即RESTful,为了不服添与你合作开发的人的懊恼,我们还是要遵循这些规范。那么到底有哪些规范呢?
域名:域名上要显示你使用了API,我们有两种方法
https://api.example.com 方法一:将API部署在专用域名上(是官网的保举方法,但这么做会存在跨域问题)
https://example.org/api/ 方法二: 写在路径上,API很简单
版本:我们的项目在开发过程中会进行成果的添加及优化,这个时候我们凡是会为每一个版本设定一个版本号,版本号的显示也有两种方法
https://api.example.com/v1/ 方法一: 写在路径上,API很简单
https://v1.example.com 方法二:将版本号部署在专用域名上(同样会存在跨域问题, 跨域时会引发发送多次请求)
路径:视网络上任何对象都是资源,所以路径均使用名词暗示(可复数)
https://api.example.com/v1/zoos
https://api.example.com/v1/animals
请求方法:
GET :从处事器取出资源(一项或多项)
POST :在处事器新建一个资源
PUT :在处事器更新资源(客户端供给转变后的完整资源——全部改削)
PATCH :在处事器更新资源(客户端供给转变的属性——部分改削)
DELETE :从处事器删除资源
过滤:通过在URL上传参的方法,有GET请求获取相应的数据
https://api.example.com/v1/zoos?limit=10:指定返回数据的数量
https://api.example.com/v1/zoos?offset=10:指定返回数据的开始位置
https://api.example.com/v1/zoos?page=2&per_page=100:指定第几页以及每页的数据数量
https://api.example.com/v1/zoos?sortby=name&order=asc:指定返回功效凭据哪个属性排序,以及排序挨次
https://api.example.com/v1/zoos?animal_type_id=1:指定筛选条件
状态码:我们可以通过状态码来判断请求的状态,以措置惩罚惩罚相应的请求。在状态码是4开头时,应该捕捉相应错误并返回错误信息