日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)FastAPI教程:FastAPI教程路徑操作裝飾器依賴項(xiàng)

有時(shí),我們并不需要在路徑操作函數(shù)中使用依賴項(xiàng)的返回值。

或者說(shuō),有些依賴項(xiàng)不返回值。

但仍要執(zhí)行或解析該依賴項(xiàng)。

對(duì)于這種情況,不必在聲明路徑操作函數(shù)的參數(shù)時(shí)使用 Depends,而是可以在路徑操作裝飾器中添加一個(gè)由 dependencies 組成的 list。

在路徑操作裝飾器中添加 dependencies 參數(shù)

路徑操作裝飾器支持可選參數(shù) ~ dependencies。

該參數(shù)的值是由 Depends() 組成的 list:

from fastapi import Depends, FastAPI, Header, HTTPException

app = FastAPI()


async def verify_token(x_token: str = Header(...)):
    if x_token != "fake-super-secret-token":
        raise HTTPException(status_code=400, detail="X-Token header invalid")


async def verify_key(x_key: str = Header(...)):
    if x_key != "fake-super-secret-key":
        raise HTTPException(status_code=400, detail="X-Key header invalid")
    return x_key


@app.get("/items/", dependencies=[Depends(verify_token), Depends(verify_key)])
async def read_items():
    return [{"item": "Foo"}, {"item": "Bar"}]

路徑操作裝飾器依賴項(xiàng)(以下簡(jiǎn)稱為“路徑裝飾器依賴項(xiàng)”)的執(zhí)行或解析方式和普通依賴項(xiàng)一樣,但就算這些依賴項(xiàng)會(huì)返回值,它們的值也不會(huì)傳遞給路徑操作函數(shù)。

提示

有些編輯器會(huì)檢查代碼中沒(méi)使用過(guò)的函數(shù)參數(shù),并顯示錯(cuò)誤提示。

在路徑操作裝飾器中使用 dependencies 參數(shù),可以確保在執(zhí)行依賴項(xiàng)的同時(shí),避免編輯器顯示錯(cuò)誤提示。

使用路徑裝飾器依賴項(xiàng)還可以避免開(kāi)發(fā)新人誤會(huì)代碼中包含無(wú)用的未使用參數(shù)。

說(shuō)明

本例中,使用的是自定義響應(yīng)頭 X-Key 和 X-Token。

但實(shí)際開(kāi)發(fā)中,尤其是在實(shí)現(xiàn)安全措施時(shí),最好使用 FastAPI 內(nèi)置的安全工具(詳見(jiàn)下一章)。

依賴項(xiàng)錯(cuò)誤和返回值

路徑裝飾器依賴項(xiàng)也可以使用普通的依賴項(xiàng)函數(shù)。

依賴項(xiàng)的需求項(xiàng)

路徑裝飾器依賴項(xiàng)可以聲明請(qǐng)求的需求項(xiàng)(比如響應(yīng)頭)或其他子依賴項(xiàng):

from fastapi import Depends, FastAPI, Header, HTTPException

app = FastAPI()


async def verify_token(x_token: str = Header(...)):
    if x_token != "fake-super-secret-token":
        raise HTTPException(status_code=400, detail="X-Token header invalid")


async def verify_key(x_key: str = Header(...)):
    if x_key != "fake-super-secret-key":
        raise HTTPException(status_code=400, detail="X-Key header invalid")
    return x_key


@app.get("/items/", dependencies=[Depends(verify_token), Depends(verify_key)])
async def read_items():
    return [{"item": "Foo"}, {"item": "Bar"}]

觸發(fā)異常

路徑裝飾器依賴項(xiàng)與正常的依賴項(xiàng)一樣,可以 raise 異常:

from fastapi import Depends, FastAPI, Header, HTTPException

app = FastAPI()


async def verify_token(x_token: str = Header(...)):
    if x_token != "fake-super-secret-token":
        raise HTTPException(status_code=400, detail="X-Token header invalid")


async def verify_key(x_key: str = Header(...)):
    if x_key != "fake-super-secret-key":
        raise HTTPException(status_code=400, detail="X-Key header invalid")
    return x_key


@app.get("/items/", dependencies=[Depends(verify_token), Depends(verify_key)])
async def read_items():
    return [{"item": "Foo"}, {"item": "Bar"}]

返回值

無(wú)論路徑裝飾器依賴項(xiàng)是否返回值,路徑操作都不會(huì)使用這些值。

因此,可以復(fù)用在其他位置使用過(guò)的、(能返回值的)普通依賴項(xiàng),即使沒(méi)有使用這個(gè)值,也會(huì)執(zhí)行該依賴項(xiàng):

from fastapi import Depends, FastAPI, Header, HTTPException

app = FastAPI()


async def verify_token(x_token: str = Header(...)):
    if x_token != "fake-super-secret-token":
        raise HTTPException(status_code=400, detail="X-Token header invalid")


async def verify_key(x_key: str = Header(...)):
    if x_key != "fake-super-secret-key":
        raise HTTPException(status_code=400, detail="X-Key header invalid")
    return x_key


@app.get("/items/", dependencies=[Depends(verify_token), Depends(verify_key)])
async def read_items():
    return [{"item": "Foo"}, {"item": "Bar"}]

為一組路徑操作定義依賴項(xiàng)

稍后,大型應(yīng)用 - 多文件一章中會(huì)介紹如何使用多個(gè)文件創(chuàng)建大型應(yīng)用程序,在這一章中,您將了解到如何為一組路徑操作聲明單個(gè) dependencies 參數(shù)。

全局依賴項(xiàng)

接下來(lái),我們將學(xué)習(xí)如何為 FastAPI 應(yīng)用程序添加全局依賴項(xiàng),創(chuàng)建應(yīng)用于每個(gè)路徑操作的依賴項(xiàng)。


當(dāng)前名稱:創(chuàng)新互聯(lián)FastAPI教程:FastAPI教程路徑操作裝飾器依賴項(xiàng)
文章路徑:http://m.5511xx.com/article/dpehpig.html