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

FastAPI學(xué)習(xí)-22.response 異常處理 HTTPException

這篇具有很好參考價(jià)值的文章主要介紹了FastAPI學(xué)習(xí)-22.response 異常處理 HTTPException。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

某些情況下,需要向客戶端返回錯(cuò)誤提示。
這里所謂的客戶端包括前端瀏覽器、其他應(yīng)用程序、物聯(lián)網(wǎng)設(shè)備等。
需要向客戶端返回錯(cuò)誤提示的場景主要如下:

  • 客戶端沒有執(zhí)行操作的權(quán)限
  • 客戶端沒有訪問資源的權(quán)限
  • 客戶端要訪問的項(xiàng)目不存在
  • 等等 …

遇到這些情況時(shí),通常要返回?4XX(400 至 499)HTTP 狀態(tài)碼。
4XX?狀態(tài)碼與表示請求成功的?2XX(200 至 299) HTTP 狀態(tài)碼類似。
只不過,4XX?狀態(tài)碼表示客戶端發(fā)生的錯(cuò)誤。

使用?HTTPException

向客戶端返回 HTTP 錯(cuò)誤響應(yīng),可以使用?HTTPException

from fastapi import FastAPI, HTTPException

app = FastAPI()

items = {"foo": "The Foo Wrestlers"}


@app.get("/items/{item_id}")
async def read_item(item_id: str):
    if item_id not in items:
        raise HTTPException(status_code=404, detail="Item not found")
    return {"item": items[item_id]}

觸發(fā)?HTTPException

HTTPException?是額外包含了和 API 有關(guān)數(shù)據(jù)的常規(guī) Python 異常。
因?yàn)槭?Python 異常,所以不能?return,只能?raise。

如在調(diào)用_路徑操作函數(shù)_里的工具函數(shù)時(shí),觸發(fā)了?HTTPException,F(xiàn)astAPI 就不再繼續(xù)執(zhí)行_路徑操作函數(shù)_中的后續(xù)代碼,而是立即終止請求,并把?HTTPException?的 HTTP 錯(cuò)誤發(fā)送至客戶端。

在介紹依賴項(xiàng)與安全的章節(jié)中,您可以了解更多用?raise?異常代替?return?值的優(yōu)勢。

本例中,客戶端用?ID?請求的?item?不存在時(shí),觸發(fā)狀態(tài)碼為?404?的異常:

    raise HTTPException(status_code=404, detail="Item not found")

響應(yīng)結(jié)果

請求為?http://example.com/items/fooitem_id?為?「foo」)時(shí),客戶端會接收到 HTTP 狀態(tài)碼 - 200 及如下 JSON 響應(yīng)結(jié)果:

{
  "item": "The Foo Wrestlers"
}

但如果客戶端請求?http://example.com/items/baritem_id?「bar」?不存在時(shí)),則會接收到 HTTP 狀態(tài)碼 - 404(「未找到」錯(cuò)誤)及如下 JSON 響應(yīng)結(jié)果:

{
  "detail": "Item not found"
}

觸發(fā)?HTTPException?時(shí),可以用參數(shù)?detail?傳遞任何能轉(zhuǎn)換為 JSON 的值,不僅限于?str
還支持傳遞?dict、list?等數(shù)據(jù)結(jié)構(gòu)。
FastAPI?能自動處理這些數(shù)據(jù),并將之轉(zhuǎn)換為 JSON。

添加自定義響應(yīng)頭

有些場景下要為 HTTP 錯(cuò)誤添加自定義響應(yīng)頭。例如,出于某些方面的安全需要。

一般情況下可能不會需要在代碼中直接使用響應(yīng)頭。

但對于某些高級應(yīng)用場景,還是需要添加自定義響應(yīng)頭:

from fastapi import FastAPI, HTTPException

app = FastAPI()

items = {"foo": "The Foo Wrestlers"}


@app.get("/items-header/{item_id}")
async def read_item_header(item_id: str):
    if item_id not in items:
        raise HTTPException(
            status_code=404,
            detail="Item not found",
            headers={"X-Error": "There goes my error"},
        )
    return {"item": items[item_id]}

響應(yīng)結(jié)果文章來源地址http://www.zghlxwxcb.cn/news/detail-727062.html

HTTP/1.1 404 Not Found
date: Sun, 24 Sep 2023 01:31:18 GMT
server: uvicorn
x-error: There goes my error
content-length: 27
content-type: application/json

{"detail":"Item not found"}

到了這里,關(guān)于FastAPI學(xué)習(xí)-22.response 異常處理 HTTPException的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(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)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

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

相關(guān)文章

  • 【Python學(xué)習(xí)】Python學(xué)習(xí)19- 異常處理

    【Python學(xué)習(xí)】Python學(xué)習(xí)19- 異常處理

    目錄 文章所屬專區(qū) Python學(xué)習(xí) 本章節(jié)主要說明Python的異常處理。 BaseException 所有異常的基類 SystemExit 解釋器請求退出 KeyboardInterrupt 用戶中斷執(zhí)行(通常是輸入^C) Exception 常規(guī)錯(cuò)誤的基類 StopIteration 迭代器沒有更多的值 GeneratorExit 生成器(generator)發(fā)生異常來通知退出 StandardError 所

    2024年01月19日
    瀏覽(18)
  • SpringBoot全局異常頁面處理學(xué)習(xí)

    SpringBoot全局異常頁面處理學(xué)習(xí)

    首先我們先在控制器中寫一個(gè)異常,默認(rèn)情況下我們的SpringBoot異常頁面是這個(gè)樣子的。 示例代碼如下: ?一、自定義靜態(tài)異常頁面 自定義靜態(tài)異常頁面,我們可以分成兩種方式,第一種就是使用HTTP狀態(tài)碼來命名頁面,例如404.html,403.html,500html等。另一種就是直接定義一個(gè)4

    2024年02月09日
    瀏覽(25)
  • 【學(xué)習(xí)】若依源碼(前后端分離版)之 “ 異常處理”

    通常一個(gè)web框架中,有大量需要處理的異常。比如業(yè)務(wù)異常,權(quán)限不足等等。前端通過彈出提示信息的方式告訴用戶出了什么錯(cuò)誤。 通常情況下我們用try…catch…對異常進(jìn)行捕捉處理,但是在實(shí)際項(xiàng)目中對業(yè)務(wù)模塊進(jìn)行異常捕捉,會造成代碼重復(fù)和繁雜, 我們希望代碼中只有

    2024年02月13日
    瀏覽(32)
  • 【Nginx22】Nginx學(xué)習(xí):FastCGI模塊(四)錯(cuò)誤處理及其它

    FastCGI 最后一篇,我們將學(xué)習(xí)完剩下的所有配置指令。在這里,錯(cuò)誤處理還是單獨(dú)拿出來成為一個(gè)小節(jié)了,而剩下的內(nèi)容都放到其它中進(jìn)行學(xué)習(xí)。不要感覺是其它的就沒用了,有些配置指令還是非常重要的哦,或許正好你現(xiàn)在的項(xiàng)目就能用上呢。 今天學(xué)習(xí)的內(nèi)容都是可以設(shè)置

    2024年02月10日
    瀏覽(23)
  • unity的C#學(xué)習(xí)——預(yù)處理指令、異常處理和文件的輸入輸出

    C# 中的預(yù)處理器指令是用來 指示編譯器在 編譯代碼之前 執(zhí)行一些預(yù)處理操作 的特殊指令。預(yù)處理器指令以 井號 # 開始,并且必須出現(xiàn)在代碼的最外層,不能包含在方法或類的內(nèi)部。 #define 指令用于定義一個(gè)符號常量。符號常量可以在代碼中使用 #if 或 #elif 指令進(jìn)行條件編

    2024年03月22日
    瀏覽(17)
  • 從零學(xué)習(xí)python - 10程序中的異常處理

    * try: ... except: ... finally: ...? 使用一個(gè)計(jì)算器方法測試一下 在 try: 中的代碼塊如果出現(xiàn)異常,會根據(jù)我們下方拋出的不同異常進(jìn)行捕獲(ValueError - ZeroDivisionError - Exception),并且進(jìn)行不同的異常處理. * raise

    2023年04月09日
    瀏覽(23)
  • 嵌入式學(xué)習(xí)筆記(3)ARM的異常處理方式介紹

    嵌入式學(xué)習(xí)筆記(3)ARM的異常處理方式介紹

    什么是異常 ??正常工作之外的流程都叫異常 ??異常會打斷正在執(zhí)行的工作,并且一般我們希望異常處理完后繼續(xù)回來執(zhí)行原工作 ??中斷是異常的一種 異常向量表 ??所有的CPU都有異常向量表,這是CPU設(shè)計(jì)時(shí)就設(shè)定好的,是硬件決定的。 ??當(dāng)異常發(fā)生時(shí),CPU會自動動作(

    2024年02月11日
    瀏覽(27)
  • express學(xué)習(xí)筆記5 - 自定義路由異常處理中間件

    express學(xué)習(xí)筆記5 - 自定義路由異常處理中間件

    修改router/index.js,添加異常處理中間件 完整代碼 創(chuàng)建 utils/constant:(為了方便后期統(tǒng)一維護(hù),單獨(dú)拉出來定義) 然后刷新http://localhost:8000/user ?這就完成了

    2024年02月14日
    瀏覽(31)
  • 案例01-tlias智能學(xué)習(xí)輔助系統(tǒng)04-登錄認(rèn)證+全局異常處理

    案例01-tlias智能學(xué)習(xí)輔助系統(tǒng)04-登錄認(rèn)證+全局異常處理

    目錄 1、基礎(chǔ)登錄 ?2、登錄校驗(yàn) 2.1、會話跟蹤技術(shù): Cookie、Session ?JWT令牌 2.2、請求過濾 方式一、過濾器(Filter) 方法二:攔截器(interceptor) Filter與Interceptor的區(qū)別? ?3、全局異常處理器 Cookie、Session Cookie和Session 優(yōu)缺點(diǎn): Cookie:優(yōu)點(diǎn):HTTP協(xié)議中支持的技術(shù) ? ? ? ? ?

    2024年02月01日
    瀏覽(56)
  • Docker拉取鏡像異常,“Error response from daemon: ”解決方法

    Docker拉取鏡像異常,“Error response from daemon: ”解決方法

    Docker拉取鏡像異常, “Error response from daemon: Get “ https://registry-1.docker.io/v2/ “: dial tcp: lookup registry-1.” 解決方法 命令方式 : #添加這兩行 然后再執(zhí)行pull即可成功拉取鏡像 ***延伸:之后在國外的網(wǎng)站StackOverFlow也看到一些類似的解釋,但是其中一個(gè)說是docker服務(wù)的問題,于是

    2024年02月11日
    瀏覽(89)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包