7.接口文档,JWT介绍
【一】接口文档
1)公司使用
-
使用world编写
-
MD共享文档
-
第三方平台:
-
公司自研
2)主要内容如下
- 说明
- 变更记录
- 全局错误
- 相关接口
- 简要描述
- 请求URL
- 请求方式
- 参数
- 返回示例
- 返回参数说明
- 备注
3)字段生成(coreapi使用)
-
安装
pip install coreapi
-
主路由内注册
from rest_framework.documentation import include_docs_urls urlpatterns = [ path('docs/', include_docs_urls(title='智慧社区项目')), ]
-
视图类内写注解
class BookModelViewSet(ModelViewSet): ''' get: 单行图书信息, post: 添加图书 ''' queryset = Book.objects.all() serializer_class = BookModelSerializer
-
全局配置 异常处理
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
-
访问路径
http://localhost:8000/docs
【二】JWT介绍
1)介绍
- 与使用session机制,来存储记录用户登录信息
- JWT(Json Web Token):常用于认证,是一个前端登录认证的方案,为token的一种方式
2)token认证机制
签发阶段:
-
token有三部分,每部由base64编码,在由
.
组合成字符串-
头部:一般为固定的信息,如公司信息、加密方式等
-
荷载:真正的数据部分(用户id、名称、过期时间、签发时间等)
-
签名:头部+荷载,并使用某种加密方式得到的字符串
-
-
直接返回给前端,前端拿到后存到响应位置
- web:存到cookie中
认证阶段:
- 后端接收到前端携带在请求头中的token,进行校验
- 将头部、荷载使用相同的方式加密
- 在将其与拿到的token进行校验
【三】base64
import base64
import json
eg = {'name': 'ST1'}
# 编码
res = base64.b64encode(json.dumps(eg).encode())
print(res) # b'eyJuYW1lIjogIlNUMSJ9'
# 解码
res = base64.b64decode(res).decode('utf-8')
print(res) # {"name": "ST1"}