首页 > 其他分享 >drf

drf

时间:2023-02-09 18:59:42浏览次数:34  
标签:base64 jwt 接口 --- token 文档 drf

今日内容

1.接口文档

2.jwt介绍和原理

3.drf-jwt快速使用

4.定制返回格式

5.jwt的认证类

1.接口文档

前后端分离
	我们做后端,写接口
    前端做前端,根据接口写app,pc,小程序
    
    作为后端来讲,我们很清楚,比如登录接口  /api/v1/login/---->post---->username,password 编码方式json----》返回的格式  {code:100,msg:登录成功}
    
    
    后端人员,接口写完,一定要写接口文档
    
    
接口文档如何编写
	1.使用word,md 编写接口文档
    2.使用第三方平台,编写我们的接口文档(非常多)---》收费
    	https://www.showdoc.com.cn/item/index
    3.公司自己使用第三方开源的搭建的---》Yapi ---》你如果想自己搭建
    	https://zhuanlan.zhihu.com/p/366025001 
            
    4.使用drf编写的接口,可以自动生成接口文档
    	swagger---》drf-yasg---》官方推荐使用
        coreapi----》咱们讲
使用coreapi自动生成接口文档步骤
	1.安装 
    2.配置路由
        from rest_framework.documentation import include_docs_urls
        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
    
接口文档,需要有的东西
	描述
    地址
    请求方式
    请求编码格式
    请求数据详解(必填,类型)
    返回格式案例
    返回数据字段解释
    错误码

2.jwt介绍和原理

Json web token (JWT)  就是web方向token的使用
JWT的构成 三部分,每部分用 .  分割
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

	头:header
    	声明类型,这里是jwt
		声明加密的算法 通常直接使用 HMAC SHA256
        公司信息...
    荷载:payload
    	存放有效信息的地方
        过期时间
        签发时间
        用户id
        用户名字。。。
	签名:signature
    	第一部分和第二部分通过秘钥+加密方式得到的
        
jwt开发重点
	登录接口---->签发token
    认证类-----》jwt认证

base64编码和解码

import base64
import json
dic={'user_id':1,'username':"lqz"}
dic_str=json.dumps(dic)
把这个字符串使用base64编码
res=base64.b64encode(dic_str.encode('utf-8'))
print(res)   

注意:base64编码后,字符长度一定是4的倍数,如果不是,使用  =  补齐,  = 不表示数据
解码
res=base64.b64decode('TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ=')
print(res)

base64 应用场景

1 jwt 使用了base64
2 网络中传输数据,也会经常使用 base64编码
3 网络传输中,有的图片使用base64编码

s=''
res=base64.b64decode(s)
with open('a.png','wb') as f:
    f.write(res)

image

3.drf-jwt快速使用

django+drf 平台开发jwt这套,有两个模块
	djangorestframework-jwt  ---》一直可以用
    djangorestframework-simplejwt---》公司用的多---》希望你们试一下
    自己封装jwt签发和认证
使用步骤
	1.安装
    2.快速签发token---》登录接口,路由中配置
    	path('login/', obtain_jwt_token),
    3.postman,向http://127.0.0.1:8000/login/发送post请求,携带username和password       

4.定制返回格式

以后,如果是基于auth的User表签发token,就可以不自己写了,但是登录接口返回的格式,只有token,不符合公司规范

使用步骤
	1.写个函数:jwt_response_payload_handler
        def jwt_response_payload_handler(token, user=None, request=None):
            return {
                'code': 100,
                'msg': '登录成功',
                'token': token,
                'username': user.username
                # 'icon':user.icon
            }
    2.配置一下 ,项目配置文件
    JWT_AUTH = {
    	'JWT_RESPONSE_PAYLOAD_HANDLER': 'app01.utils.jwt_response_payload_handler',  
	}
    
    3.使用postman测试,就能看到返回的格式了

5.jwt的认证类

以后接口要登录后才能访问的使用
	1.在视图类上加一个认证类,一个权限类class BookView(ViewSetMixin, RetrieveAPIView):
    	authentication_classes = [JSONWebTokenAuthentication]
    	permission_classes = [IsAuthenticated]  登录用户有权限,不登录用户没权限
	2.postman测试
    	请求头中key值叫Authorization
        请求头的value值是:  jwt 有效的token值

标签:base64,jwt,接口,---,token,文档,drf
From: https://www.cnblogs.com/yueq43/p/17106691.html

相关文章