Как получить возвращаемые значения из глобальных зависимостей FastAPI

#fastapi

Вопрос:

FastAPI 0.68.0

Python 3.8

 from fastapi import Depends, FastAPI, Header, HTTPException


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 = FastAPI(dependencies=[Depends(verify_key)])



@app.get("/items/")
async def read_items():

    return [{"item": "Portal Gun"}, {"item": "Plumbus"}]


 

Это пример из документов FastAPI (опустите часть кода)

Есть ли какой-нибудь способ попасть x_key внутрь read_items()

Комментарии:

1. Ввести его в качестве параметра?

2. @abdusco В методе read_items я хочу вернуть как [{‘new_key’: x_key ‘123’}], ему нужно получить x_key из verify_key . Что мне делать

3. async def read_items(x_key: str = Depends(verify_key)): ...

Ответ №1:

Вы можете ввести verify_key функцию в read_items качестве зависимости, чтобы прочитать ее значение:

 from fastapi import Depends

async def verify_key(x_key: str = Header(...)):
    ...

@app.get("/items/")
async def read_items(key: str = Depends(verify_key)):
    // use key
 

Комментарии:

1. Таким образом, это можно сделать. Но если у меня есть много методов интерфейса,от которых зависит verify_key, возможно, лучше всего использовать глобальные зависимости…

2. Вы не можете использовать глобальный, как вы могли бы использовать с колбой (вы можете, но это может привести к неопределенному поведению). Вы должны явно откуда-то извлечь значение

3. я понял. Спасибо за вашу помощь.