接口文档
# 1.前后端分离 - 后端:写接口 - 前端:根据接口写app,小程序,pc端 # 2.作为后端开发 - 我们应该清楚: ---> /api/v1/login/ ---> 登录接口使用post请求访问 ---> username,password 编码格式应该是json ---> 返回的格式 {code:100,msg:登录成功}、 ---> 后端人员,接口写完后一定要写接口文档 # 3.接口文档的编写 - 1.使用word,md编写接口文档 - 2.使用第三方平台,编写我们的接口文档【有免费,也有收费】 ---> https://www.showdoc.com.cn/item/index - 3.公司自己使用第三方开源搭建的【Yapi,也可自行搭建】 ---> https://zhuanlan.zhihu.com/p/366025001 - 4.使用drf编写的接口,可以自动生成接口文档 --->1.swagger : drf-yasg【官方推荐使用,为drf分支】 Topics-->D..your API --->2.coreapi # 4.使用coreapi自动生成接口文档步骤 - 1.安装
pip install coreapi - 2.配置路由 from rest_framework.documentation import include_docs_urls urlpatterns = [ path('docs/', include_docs_urls(title='xx项目接口文档')), ] - 3.直接注释在视图类方法上 ---> 在类下方代码上方,加注释 ---> 在类的方法上加注释 ---> 在序列化类或表模型的字段上加help_text,required... - 4.配置文件配置 REST_FRAMEWORK = { 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema', } - 5.访问地址 --->http://127.0.0.1:8000/docs # 5.接口文档需要有的东西 - 1.描述 - 2.地址 - 3.请求方式 - 4.请求编码格式 - 5.请求数据详解(必填,类型) - 6.返回格式案例 - 7.返回数据字段解释 - 8.错误码
jwt介绍和原理
JWT使用流程
# cookie,session,token的发展史 - cookie+session认证时期 - token认证时期 # Json web Token - web方向Token的方式 # jwt开发的重点 - 登录接口 ---> 签发token - 认证类 ---> jwt认证 # 1.JWT的构成: - 1.三部分,各部分之间用 . 分割 """ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ """ --> 头: header - 声明类型:这是jwt - 声明这是加密的算法:通常直接使用 HMAC SHA256 - 公司信息 --> 荷载:payload - 存放有效信息的地方 - 过期时间 - 签发时间 - 用户I - 用户名字 --> 签名:signature - 第一部分和第二部分通过密钥+加密方式得到的 - 2.base64编码使用 import base64 import json dic = {'user_id':1,'username':"lqz"} dic_str = json.dumps(dic) # 编码 res = base64.b64encode(dic_str.encode('utf-8')) print(res) # 解码 # base64编码后,字符长度一定是4的倍数,如果不是,则使用=补齐 res = base64.b64decode('eyJ1c2VyX2lkIjogMSwgInVzZXJuYW1lIjogImxxeiJ9') print(res) # 2.base64应用场景 - 1.jwt 使用了base64 - 2.网络中传输数据,也会经常使用 base64编码 - 3.网络传输中,有的图片使用base64编码 # 3.base64传输图片 s='编码后的图片编码' res=base64.b64decode(s) with open('a.png','wb') as f: f.write(res)
drf-jwt快速使用
# django+drf 平台开发jwt 这套有两个模块: - 1.djangorestframework-jwt ---> 一直可以用,不再更新 - 2.djangorestframework-simplejwt ---> 公司用的多 - 3.自己封装jwt签发和认证 # 使用步骤 - 1.安装 pip install ..... - 2.快速签发token---> 登录接口,路由中配置 from rest_framework_jwt.views import obtain_jwt_token # 路由 path('login/', obtain_jwt_token), - 3.postman 向http://127.0.0.1:8000/login/发送post请求,携带username和password,json格式
定制登录返回格式
# 在工作中,如果是基于auth的user表签发的token,就可以不自己写,但是登录接口返回的格式,只有token,不符合公司规范 # 1.使用Django auth的User表自动签发 - 1.配置setting.py import datetime JWT_AUTH = { # 自定义认证结果:见下方序列化user和自定义response # 如果不自定义,返回的格式是固定的,只有token字段 'JWT_RESPONSE_PAYLOAD_HANDLER': 'app01.utils.jwt_response_payload_handler', } - 2.写个函数:jwt_response_payload_handler #utils.py from users.ser import UserModelSerializers def jwt_response_payload_handler(token, user=None, request=None): return { 'code': 100, 'msg' : '登录成功', 'token': token, 'username': user.username } } - 3.使用postman测试就可以看到返回的格式了
jwt的认证类
# 以后接口要登录后才能访问的使用 - 1.在视图类上加一个认证类,一个权限类
class BookView(ViewSetMixin, RetrieveAPIView):
......
# 使用drf-jwt提供的认证类,我们觉得加了他就有登录认证了
# 必须要配合一个权限类,drf提供的权限类 authentication_classes = [JSONWebTokenAuthentication] permission_classes = [IsAuthenticated] # 登录用户有权限,不登录用户没权限 - 2.postman测试 -请求头中key值叫Authorization -请求头的value值是jwt【有效的token值】
标签:base64,仙界,09,jwt,接口,---,token,drf From: https://www.cnblogs.com/juzijunjun/p/17106942.html