接口文档

# 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值】

最新文章

  1. PHP基础之POST与GET
  2. bottlepy template
  3. 并发编程 04——闭锁CountDownLatch 与 栅栏CyclicBarrier
  4. Spring AOP 深入剖析
  5. 谏牲口TT十思疏
  6. html5添加音乐包括暂停
  7. DevExpress licenses.licx 问题
  8. SpringMVC、Zookeeper、Dubbo使用
  9. android 点击桌面图标,打开手机浏览器进入对应的站点
  10. Spring简单的文件配置
  11. 采用oracle官方文件(11G)——初步Concept
  12. Swift语言指南(一)--语言基础之常量和变量
  13. python命令行神器Click
  14. jsonp的原理和实现
  15. Ionic3 一些命令
  16. WebGL多模型光照综合实例
  17. webstorm提交版本时,忽略特定文件
  18. JSP连接MySQL时老是遇到驱动错误怎么办?
  19. Python爬虫入门教程 19-100 51CTO学院IT技术课程抓取
  20. sql-josn

热门文章

  1. redis底层数据结构之跳表(skiplist)
  2. 均值、中值、高斯、non-local means算法详解
  3. data_analysis:初识numpy
  4. gcc_to_use
  5. mysql正则替换 正宗!
  6. Flink常见问题解决记录
  7. springboot+mybatis实现增删改查
  8. ubuntu 20.04使用kubeadm安装k8s集群
  9. FTP主动模式(Port)和被动模式(Passive)的区别
  10. Docker 基础常用命令