#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. я понял. Спасибо за вашу помощь.