Параметры запроса из модели pydanti c - PullRequest
0 голосов
/ 19 июня 2020

Есть ли способ преобразовать модель pydanti c для запроса параметров в fastapi?

Некоторые из моих конечных точек передают параметры через тело, но некоторые другие передают их непосредственно в запросе. Все эти конечные точки используют одну и ту же модель данных, например:

class Model(BaseModel):
    x: str
    y: str

Я бы хотел избежать дублирования моего определения этой модели в определении моих «конечных точек параметров запроса», например, test_query в этом коде:

class Model(BaseModel):
    x: str
    y: str

@app.post("/test-body")
def test_body(model: Model): pass

@app.post("/test-query-params")
def test_query(x: str, y: str): pass

Какой самый чистый способ сделать это?

1 Ответ

0 голосов
/ 19 июня 2020

В документации есть ярлык , чтобы избежать подобных повторов. В этом случае он выдаст:

@app.post("/test-query-params")
def test_query(model: Model = Depends()): pass

Что позволит вам запросить /test-query-params?x=1&y=2, а также даст правильное описание OpenAPI для этой конечной точки.

Подобные решения могут использоваться для использования моделей pydanti c в качестве дескрипторов данных формы.

...