接口文档(jwt)

接口文档

1 作为后端,接口写完了---》接口给前端使用
    -登录接口:username,password ,code
2 写接口的人负责写接口文档  
    -如何写?
    -写在哪?
3 通常公司中会有放接口文档的平台:
    1 使用world编写,放在公共平台上
    2 使用MD编写
    3 第三方平台编写:showdoc
    4 自己开发:大公司
    5 基于开源的 使用:YAPI 百度开源
        -https://zhuanlan.zhihu.com/p/366025001
    6 自动生成接口文档
4 自动生成接口文档步骤
    -drf--》借助于第三方生成 
        -corapi
        -drf-yasg
        -drf-spectacular
    -fastapi--》自带接口文档
5 coreapi如何使用
    1 安装:pip3 install coreapi
    2 在路由中注册
        from rest_framework.documentation import include_docs_urls
        urlpatterns = [
            path('docs/', include_docs_urls(title='智慧社区项目')),
        ]
    3 在视图类中写 视图类
        -使用注释
            ---》写在类上的注释
            ---》写在方法内的注释
    4 在序列化类中控制字段
        -required
        -help_text  
    5 配置文件配置
        'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
    6 访问路径
        http://127.0.0.1:8000/docs

jwt介绍

# 1 作用是 不使用session机制,来存储记录用户登录信息
# 2 jwt=Json Web Token:Json web token (JWT):常被用于认证,它是一个前端登录认证的方案,jwt就是token的一种
    -session和cookie方案
# 3 cookie,session,token发展史
    https://www.cnblogs.com/liuqingzheng/articles/17858187.html
# 4 token认证机制
    1 签发阶段:登录接口,登录成功,就签发
        -token有 三部分,每部分用 . 分割 ,组装成一个字符串,每部分都用base64编码
            头部:公司信息,加密方式等
            荷载:真正数据部分,用户id,用户名字,过期时间,签发时间。。
            签名:头部+荷载--》使用某种加密方式加密---》得到一个字符串
        
        -直接返回给前端,不在后端存储
        -前端拿到后,web:存到cookie中,小程序:存到小程序存储中  app:app存储中
        
    2 认证阶段:需要登录后方的接口,要校验token是否合法
        -前端携带 token在请求头中到后端,后端接收到后进行校验
        -把头部和荷载使用同样的加密方式加密--》得到一个字符串  和第三部分比较是否一样
            -如果一样,说明就是当前我们签发的,没有被别人篡改过--》校验通过
                -取出用户id--》就能知道是哪个用户访问了
            -如果不一样,说明就不是当前我们签发的,被别人篡改过--》校验不通过
​
# 5 一个典型的token,长这样
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.       # 头 
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.# 荷载
TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ   # 签名
​

base64编码和解码

import base64
import json
# 编码
user_dic={'name':'lqz','age':19,'user_id':99}
# 转成json格式字符串 
user_str=json.dumps(user_dic)
​
# 使用base64编码
res=base64.b64encode(user_str.encode('utf-8'))
print(res)  # eyJuYW1lIjogImxxeiIsICJhZ2UiOiAxOSwgInVzZXJfaWQiOiA5OX0=
​
​
# 解码
# res1=base64.b64decode('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9=') # b'{"alg":"HS256","typ":"JWT"}'
# res1=base64.b64decode('eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9') # {"sub":"1234567890","name":"John Doe","admin":true}'
res1=base64.b64decode('TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ=') # 签名
print(res1)
​
​
# 1 base64的长度一定是 4 的倍数,如果不足,要用 =  补齐, = 不表示数据,只是占位
# 2 base64的作用
    # 1 jwt 使用base64编码
    #2 数据在互联网中传输,会使用base64编码后传输
    #3 图片的二进制--》转成base64在互联网中传输
​
​
​
​
s='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'
res=base64.b64decode(s)
print(res)
with open('a.jpg','wb') as f:
    f.write(res)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值