drf 接口
安装:pip install djangorestframework
使用drf时,要在settings中注册
接口
什么是接口:规定了提交请求参数的请求方式的url链接,访问其可以获得响应的反馈数据的url链接
四部分:url链接 + 请求方式 + 请求参数 + 响应数据
https://api.baidu.map/search (接口)
url链接:长得像返回数据的url链接
请求方式:get、post、put、patch、delete
请求参数:json或xml格式的key-value类型数据
ak:6E823f587c95f0148c19993539b99295
region:上海
query:肯德基
output:json
响应结果:json或xml格式的数据
上方请求参数的output参数值决定了响应数据的格式
{ "status":0, "message":"ok", "results":[ { "name":"肯德基(罗餐厅)", "location":{ "lat":31.415354, "lng":121.357339 }, "address":"月罗路2380号", "province":"上海市", "city":"上海市", "area":"宝山区", "street_id":"339ed41ae1d6dc320a5cb37c", "telephone":"(021)56761006", "detail":1, "uid":"339ed41ae1d6dc320a5cb37c" } ... ] }
接口文档的编写:Yapi
访问测试网站
创建接口项目
创建接口
编写接口
接口测试工具:Postman
Postman是一款接口调试工具,是一款免费的可视化软件,同时支持各种操作系统平台,是测试接口的首选工具。 Postman可以直接从官网:https://www.getpostman.com/downloads/下载获得,然后进行傻瓜式安装。
工作面板
简易的get请求
简易的post请求
案例:请求百度地图接口
restful接口规范
1.url链接:
1)接口都是操作前后台数据的,所以要保证爱护据的安全性
采用https协议
2)接口用来操作数据,与网址(操作页面)有区别,所以用特定的关键字表示接口
api关键字
3)接口操作的数据称之为资源,在url中只体现资源名称(名词),不体现操作资源的方式动词
常规资源接口
- https://www.baidu.com/books/
- https://www.baidu.com/books/(pk)/
非常规接口 - 和某资源不是特别密切或者不止一种资源
- https://api.baidu.com/login/
- https://api.baidu.com/place/search
4)如果一个资源存在多个版本结果,在url链接中要用特定的符号来兼容多版本共存
v1|v2
- https://www.baidu.com/v1/books/
- https://www.baidu.com/v2/books/
5)群资源操作,一般还有额外的限制条件,如排序、限制测试、分页等等?
限制条件
- https://www.baidu.com/v1/books/?ordering=-price&limit=3
2.请求方式
五大请求方式
get:获取单个或多个资源
- https://api.baidu.com/books/ 群查,返回多个结果对象
- https://api.baidu.com/books/(pk)/ 单查,返回单个结果对象
post :新增单个或多个资源
- https://api.baidu.com/books/
单增,提交单个数据字典,完成单增,返回单个结果对象
群增,提供多个数据字典的数据,完成群增,返回多个结果对象
put:整体修改单个或多个资源
- https://api.baidu.com/books/
整体修改多个,提供多个数据字典的数组(数据字典中包含主键),完成群改,返回多个结果对象
- https://api.baidu.com/books/(pk)/
整体修改单个,提供单个数据字典(主键在url中体现),完成单改,返回单个结果对象
patch:局部修改单个或多个资源
方式与put完全相同,不同的是:操作的资源如果有5个key-value键值对,put请求提供的字典必须全部包含,但patch提供的字典包含的键值对0~5个都可以
delete:删除单个或多个资源
- https://api.baidu.com/books/
多删,提供多个资源主键数据,完成群删,不做任何资源返回(一般我们会返回结果信息:成功|失败)
- https://api.baidu.com/books/(pk)/
单删,不需要提供额外数据,完成单删,不做任何资源返回(一般我们会返回结果信息:成功|失败)
3.响应结果
响应对象中要包含网络状态码(网络状态信息和网络状态码捆绑出现,不要额外设置):
1xx:基本信息
2xx:成功 - 200基本 201新增成功
3xx:重定向
4xx:客户端错误 - 400错误请求;403请求无权限;404请求资源不存在
5xx:服务端错误 - 500服务器错误
数据状态码(一般都是前后台约定规则):
0:成功
1:失败 - 1xx:具体失败信息(要在接口文档中明确写出)
2:无数据 - 2xx:具体无数据信息(要在接口文档中明确写出)
数据状态信息(一般不仅仅是对数据状态码的解释,更多是对结果的描述,给前台开发者阅读的)
数据结果(常量、数组、字典),如果有子资源(图片、音频、视频),返回资源的url链接
{ "status": 0, "msg": 'ok', "results": [{ "name": "西游记", "img": "https://api.baidu.com/media/book/xyj.png" }] }