目录
Ajax 的 axios 其他补充
Django-REST-framework
大纲:
1. 接口
1. 什么是 web API 接口?
2. 接口文档的编写: YApi
3. 接口测试工具 Postman
2.restful 接口规范
Ajax 的 axios 其他补充
// 三种携带数据的方式
1. 数据包形式
data:{} // 后台用 request.POST 拿到
2. 拼接参数形式
params:{} // 后台用 request.GET 拿到
3. 请求头形式
- headers:{
- authorization:'请求头信息'
- } // 后台用 request.META.get('HTTP_AUTHORZITAIONS') 拿到
自定义请求头信息: 后台 settings.py 中配置
- CORS_ALLOW_HEADERS=[
- """ 把 cors 默认的请求头写上 默认的在 default.py 中
- 后面填写自定义的请求头 不然过不来 """'lddragon',
- 'authorization'
- ]
想拿到的话 就 使用 request.META
- # request.META 拿到的是一个超级大的字典 请求头的信息都是 HTTP_ + 你传的请求头大写
- request.META.get('HTTP_AUTHORIZATIONS')
- Django-REST-framework
drf 是 Django 的插件, 所以要提前安装 Django , 基于 restful 规范的原生 Django 接口
安装:
pip3 install djangorestframework
注册:
- # 记住导入 rest_framework 后必须在 settings 里面注册
- INSTALLED_APPS = [
- ...
- 'rest_framework'
- ]
大纲:
"""
1. 接口: 接口的概念, 数据接口文档, 接口规范 (restful)
2.drf 请求生命周期 -cbv
3.drf 基础组件: 请求, 响应, 渲染, 解析, 异常
4.drf 的序列化 (核心): 序列化, 模型序列化, 群操作序列化 *****
5.drf 的视图家族 视图类 视图工具类 工具视图类 视图集
6.drf 三大认证 (核心): 认证, 权限, 频率 *****
7.drf 的过滤: 赛选, 搜索, 排序, 分页, 区间, 自定义
"""
1. 接口
1. 什么是 Web API 接口?
通过网络, 规定了前后台信息交互规则的 url 链接, 也就是前后台信息交互的媒介
Web API 接口和一般的 url 链接还是有区别的, Web API 接口简单概括有下面四大特点
url: 长得像返回数据的 url 链接
https://api.map.baidu.com/place/v2/search
请求方式: get,post,put,patch,delete
采用 get 方式请求上方接口
请求参数: 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"
- }
- ...
- ]
- }
2. 接口文档的编写: YApi
YApi 的测试网站: http://yapi.demo.qunar.com/ http://yapi.demo.qunar.com/
3. 接口测试工具 Postman
Postman 可以直接从官网: https://www.getpostman.com/downloads/ https://www.getpostman.com/downloads/ 下载获得, 然后进行傻瓜式安装.
Postman 是一款接口调试工具, 是一款免费的可视化软件, 同时支持各种操作系统平台, 是测试接口的首选工具.
2.restful 接口规范
接口规范: 就是为了采用不同的后台语言, 也能使用同样的接口获取到同样的数据
如何写接口: 接口规范是 规范化书写接口的, 写接口要写 url, 响应数据 注: 如果将请求参数也纳入考量范围, 那就是在写 接口文档~
分为两大部分: url 和 响应数据
1) 用 API 关键字标识接口 url
API.baidu.com | www.baidu.com/API
2) 接口数据安全性决定优先选择 https 协议
3) 如果一个接口有多版本存在, 需要在 url 中标识体现
API.baidu.com/v1/... | API.baidu.com/v2/...
4) 接口操作的数据源称之为 资源, 在 url 中一般采用资源复数形式, 一个接口可以概括对该资源的多种操作方式
API.baidu.com/books | API.baidu.com/books/(pk)
5) 请求方式有多种, 用一个 url 处理如何保证不混乱 - 通过请求方式标识操作资源的方式
/books get 获取所有
/books post 增加一个 (多个)
/books/(pk) delete 删除一个
/books/(pk) put 整体更新一个
/books/(pk) patch 局部更新一个
6) 资源往往涉及数据的各种操作方式 - 筛选, 排序, 限制
API.baidu.com/books/?search = 西 & ordering=-price&limit=3
请求方式 (五大请求方式):
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)/
- # 单删, 不需要提供额外数据, 完成单删, 不做任何资源返回 (一般我们会返回结果信息: 成功 | 失败)
响应结果:
1. 响应对象中要包含网络状态码 (网络状态信息和网络状态码捆绑出现, 不要额外设置):
1xx: 基本信息
2xx: 成功 - 200 基本 201 新增成功
3xx: 重定向
4xx: 客户端错误 - 400 错误请求; 403 请求无权限; 404 请求资源不存在
5xx: 服务端错误 - 500 服务器错误
2. 数据状态码 (一般都是前后台约定规则):
0: 成功
1: 失败 - 1xx: 具体失败信息 (要在接口文档中明确写出)
2: 无数据 - 2xx: 具体无数据信息 (要在接口文档中明确写出)
3. 据状态信息 (一般不仅仅是对数据状态码的解释, 更多是对结果的描述, 给前台开发者阅读的)
4. 结果 (常量, 数组, 字典), 如果有子资源 (图片, 音频, 视频), 返回资源的 url 链接
- {
- "status": 0,
- "msg": 'ok',
- "results": [{
- "name": "西游记",
- "img": "https://api.baidu.com/media/book/xyj.png"
- }]
- }
来源: http://www.bubuko.com/infodetail-3346972.html