API是后端编程人员写的

时间:2021-07-15 05:06:09

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开头时,应该捕捉相应错误并返回错误信息