Как добавить документацию по необходимым параметрам запроса? - PullRequest
4 голосов
/ 03 августа 2020

Я пытаюсь создать конечную точку API fastapi, которая полагается на параметры HTTP GET, документирует их и использует возможности проверки fastapi. Рассмотрим следующий минимальный пример:

import fastapi

app = fastapi.FastAPI(
)

@app.get("/endpoint")
def example_endpoint(
    par1: int = fastapi.Query(
        None,
        description="example documentation1",
    ),

    par2: int = fastapi.Query(
        None,
        description="example documentation2",
    ),
):
    return {"test": par1 + par2}

Он поддерживает документацию и работает с параметрами HTTP GET, но не проверяет их - http://localhost: 8000 / endpoint? Par1 = 2 & par2 = 3 работает нормально, но http://localhost: 8000 / конечная точка вылетает из-за внутренней ошибки сервера вместо уведомления пользователя о том, что параметр ожидался. Есть ли способ сделать par1 и par2 обязательными и сохранить возможность документации?

1 Ответ

3 голосов
/ 03 августа 2020

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

from fastapi import Query

Query(...,description="example documentation1")

Таким образом, в вашем случае ответ ниже может выполнить задание

@app.get("/endpoint")
def example_endpoint(
    par1: int = fastapi.Query(..., description="example documentation1",),
    par2: int = fastapi.Query(..., description="example documentation2",),
):

    if par1 and par2:
        return {"test": par1 + par2}

    raise ValueError("Missing query parameters")

Также вы можете использовать example=1

Query(..., description="example documentation2", example=1)
...