国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

drf——全局處理異常、接口文檔、jwt介紹、based64編碼與解碼

這篇具有很好參考價值的文章主要介紹了drf——全局處理異常、接口文檔、jwt介紹、based64編碼與解碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

全局異常處理原理

# 對于前端來講,后端即便報錯,也要返回統(tǒng)一的格式,前端便于處理
{code:999,msg:'系統(tǒng)異常,請聯(lián)系系統(tǒng)管理員'}

# 只要三大認(rèn)證,視圖類的方法出了異常,都會執(zhí)行一個函數(shù):
    rest_framework.views import exception_handler

# drf只要出了異常就會執(zhí)行 這是drf的配置文件中的
    'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler'
	
"""
dispatch中處理全局異常先走response = self.handle_exception(exc)
進(jìn)到handle_exception
exception_handler = self.get_exception_handler()
會去執(zhí)行配置文件配置的exception_handler這個函數(shù)
"""

# 但是源碼是不能改的 我們可以自定義一個函數(shù) 配置一下 以后出了異常 執(zhí)行我們自己的函數(shù)
"""
需要在項目的配置文件中配置上自己寫的這個函數(shù) 字典的v是函數(shù)的路徑
REST_FRAMEWORK = {
    'EXCEPTION_HANDLER': 'app01.excepitons.common_exception_handler',
}
"""
# 注意:exception_handler
"""
如果異常對象是drf的APIException的對象,就會返回Response
exception_handler只處理了drf的異常,其他的異常需要我們自己處理
如果異常對象不是drf的APIException對象,就會返回None
"""
# exception_handler源碼:
	def exception_handler(exc, context):  # 如果有異常會走這
        if isinstance(exc, exceptions.APIException):  # 判斷是否是APIException的對象 是就返回Response 不是返回None
            if isinstance(exc.detail, (list, dict)):
                data = exc.detail
            else:
                data = {'detail': exc.detail}
            return Response(data, status=exc.status_code, headers=headers)
    	return None
    
# 補(bǔ)充 內(nèi)置方法
isinstance()  判斷一個對象是不是某個類的對象 isinstance(對象,類)
issubclass()  判斷一個類,是不是另一個類的子類

全局異常處理代碼

# 我們自己自定義的函數(shù)

def common_exception_handler(exc,context):
    # 只要走到這里,一定出異常了,我們正常的項目要記錄日志
    res = exception_handler(exc,context)
    # 兩種可能:應(yīng)該是Response對象,一個是None
    if res:
        if isinstance(res.data,dict)
        # 如果res有值 說明是drf的異常,它處理了
        	detail = res.data.get('detail')
        else:
            detail = res.data
        return Response({'code':999,'msg':detail})
    else:
        # 如果res沒有值返回的是None 則說明是其他異常,它沒有處理
        # return Response({'code': 999, 'msg': '系統(tǒng)異常,請聯(lián)系系統(tǒng)管理員'})
        return Response({'code':100,'msg':str(exc)})
    
# 項目的配置文件
REST_FRAMEWORK = {
    'EXCEPTION_HANDLER': 'app01.excepitons.common_exception_handler',
}

接口文檔

# 后端把接口寫好后
	登錄接口
    注冊接口
    查詢所有圖書帶過濾接口
# 前端人員需要根據(jù)接口文檔,進(jìn)行前端開發(fā)

# 前后端需要做對接----》對接第一個東西就是這個接口文檔---》前端照著接口文檔開發(fā)
# 公司3個人,每個人開發(fā)了10個接口,3個人都要同時寫接口文檔

# 接口文檔的編寫形式
	1.word,md編寫,大家都可以操作,寫完放在git上或者是公司的文檔管理平臺上
    2.第三方的接口文檔平臺(收費(fèi))
    	https://www.showdoc.com.cn/
    3.公司自己開發(fā)接口文檔平臺
    4.公司使用開源的接口文檔平臺,搭建
    	-YAPI:百度開源的
        -https://zhuanlan.zhihu.com/p/366025001 # 如何搭建
    5.項目自動生成接口文檔
    	5.1 coreapi
        5.2 swagger
        
# 使用coreapi自動生成接口文檔
	使用步驟:
    	1. 安裝:pip38 install coreapi
        2.加一個路由
        	from rest_framework.documentation import include_docs_urls
            urlpatterns = [
                path('docs/',include_docs_urls(title='站點(diǎn)頁面標(biāo)題'))
            ]
        3.在視圖類上加注釋
       	4.配置文件中配置
        'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema'
        5.表模型或序列化類的字段上寫 help_text--->會顯示在接口文檔的字段介紹上
        6.訪問地址:
        	http://127.0.0.1:8000/docs/

jwt介紹和原理

# https://www.cnblogs.com/liuqingzheng/p/16154439.html

# cookie,session,token發(fā)展歷史
	會話管理
    cookie:客戶端瀏覽器的鍵值對
    session:服務(wù)端的鍵值對(djangosession表,內(nèi)存中,文件,緩存數(shù)據(jù)庫)
    token:服務(wù)端生成的加密字符串,如果存在客戶端瀏覽器上,就叫cookie
    	三部分:頭,荷載,簽名
        簽發(fā):登錄成功,簽發(fā)
        認(rèn)證:認(rèn)證類中認(rèn)證
        
# jwt:Json web token (JWT),web方向的token認(rèn)證
	長得樣子:   eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

drf——全局處理異常、接口文檔、jwt介紹、based64編碼與解碼文章來源地址http://www.zghlxwxcb.cn/news/detail-461041.html

base64編碼和解碼

# base64并不是一種加密反射,只是編碼解碼方式
# 字符串,可以轉(zhuǎn)成base64編碼格式:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
# eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 解碼成base64

import json
import base64

d = {'user_id':1,'username':'lqz'}
d_str = json.dumps(d)
# print(d_str)
# 對字符串進(jìn)行base64 編碼
res = base64.b64encode(bytes(d_str,encoding='utf-8'))
print(res)  # b'eyJ1c2VyX2lkIjogMSwgInVzZXJuYW1lIjogImxxeiJ9'
# 解碼
res = base64.b64decode(res)
print(res)
# 括號內(nèi)也可以直接放一串字符串 長度必須是4的倍數(shù) 長度不夠時用=補(bǔ)齊
res = base64.b64decode('TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ=')
print(res)

# base64的用途
"""
1.在互聯(lián)網(wǎng)中 前后端數(shù)據(jù)交互使用base64編碼
2.jwt 字符串使用base64編碼
3.互聯(lián)網(wǎng)中一些圖片 使用base64編碼
"""

到了這里,關(guān)于drf——全局處理異常、接口文檔、jwt介紹、based64編碼與解碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • python標(biāo)準(zhǔn)模塊介紹 -Base64: Base64, Base85等數(shù)據(jù)編碼

    功能:RFC 3548: Base16, Base32, Base64 數(shù)據(jù)編碼。轉(zhuǎn)換二進(jìn)制數(shù)據(jù)為適合明文協(xié)議傳輸?shù)?ASCII 序列。轉(zhuǎn)換 8bits 為每個字節(jié)包含 6,5 或 4bits 的有效數(shù)據(jù),比如 SMTP, URL 的一部分或者 HTTP POST 的一部分。參考: RFC 3548。編碼算法不同于 uuencode。 類型:標(biāo)準(zhǔn)庫 相關(guān)模塊:uu, binhex, uu, quopri Base64

    2024年02月05日
    瀏覽(27)
  • 快速教你如何使用postman工具進(jìn)行接口測試?(配置全局token、JWT可用)

    快速教你如何使用postman工具進(jìn)行接口測試?(配置全局token、JWT可用)

    現(xiàn)在很多人都在使用前后端分離進(jìn)行項目開發(fā),那在后端開發(fā)過程中使用postman測試工具可快速便捷完成接口測試。但是在測試過程中,很多人發(fā)現(xiàn)因為JWT的鑒權(quán),導(dǎo)致半個小時就需要更新一下token,讓我們的測試變得復(fù)雜。 若是將token作為全局變量,每次都能夠自動獲取tok

    2024年02月15日
    瀏覽(24)
  • Base64編碼的全面介紹

    Base64編碼的全面介紹

    1. Base64的定義和作用 Base64是一種用64個字符表示二進(jìn)制數(shù)據(jù)的編碼方式,通常用于在網(wǎng)絡(luò)傳輸中將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為可打印字符的形式。Base64編碼后的數(shù)據(jù)由大小寫字母、數(shù)字和特殊字符組成,可以安全地在文本協(xié)議中傳輸,同時保留數(shù)據(jù)的完整性。 Base64編碼解碼 | 一個覆蓋

    2024年04月08日
    瀏覽(20)
  • 前端實(shí)現(xiàn)base64編碼處理

    文件上傳時,因為base64文件字符串過長后端接收失敗的問題。 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 Base64是一種用于將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為ASCII字符集中可打印字符的編碼方法。它通常用于在不同系統(tǒng)之間傳輸二進(jìn)制數(shù)據(jù),因為許多系統(tǒng)只支持文本數(shù)據(jù)的傳輸。 代

    2024年02月12日
    瀏覽(39)
  • springboot全局異常處理和自定義異常處理

    在spring項目中,優(yōu)雅處理異常,好處是可以將系統(tǒng)產(chǎn)生的全部異常統(tǒng)一捕獲處理,自定義的異常也由全局異常來捕獲,如果涉及到validator參數(shù)校驗器使用全局異常捕獲也是較為方便。 GlobalExceptionHandler類: 自定義異常CustomException類: 通用返回類:AjaxResult 枚舉類ResultCodeEnum:

    2024年02月04日
    瀏覽(16)
  • DRF JWT認(rèn)證進(jìn)階

    DRF JWT認(rèn)證進(jìn)階

    (1)模型準(zhǔn)備 模型準(zhǔn)備(繼承 django 的 auth_user 表) 添加配置文件,修改用戶模型表為自定義表 (2)知識點(diǎn)綁定方法 詳情請見:Python 面向?qū)ο笾壎ê头墙壎ǚ椒╛python 綁定方法-CSDN博客 實(shí)例方法 當(dāng) 對象調(diào)用 實(shí)例方法時( 對象.實(shí)例方法() ), 自動將對象當(dāng)作第一個參數(shù)傳

    2024年04月27日
    瀏覽(22)
  • drf——jwt

    drf——jwt

    2024年02月06日
    瀏覽(22)
  • 登錄頁面jwt密鑰,過濾器,攔截器,異常處理

    需求: 用戶未登錄時,訪問其他也沒面,操作添加、刪除等操作時,強(qiáng)行跳轉(zhuǎn)至登錄頁面。 實(shí)現(xiàn)方法: 1.使用Cookie,登錄后后端添加一個cookie,每次頁面判斷是否有cookie, 2。使用session,原理同上,只不過session是存儲在服務(wù)器里的,cookie是在瀏覽器里。 3。使用jwt令牌,登

    2023年04月25日
    瀏覽(26)
  • vue:處理base64格式文件pdf、圖片預(yù)覽

    vue:處理base64格式文件pdf、圖片預(yù)覽

    解釋一下這段代碼的功能: ) preview(item) 是一個函數(shù),接受一個參數(shù) item ,其中包含了文件的相關(guān)信息。 )首先,通過條件語句 if (item.type == \\\'pdf\\\') 檢查文件類型是否為 \\\'pdf\\\'。 )如果文件類型是 \\\'pdf\\\',則執(zhí)行以下操作: 使用 webAPI.server.get() 方法發(fā)送一個請求,請求的URL是通

    2024年01月18日
    瀏覽(236)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包