如何为所需的查询参数添加文档?
How to add documentation for required query parameters?
我正在尝试创建一个依赖于 HTTP GET 参数的 fastapi API 端点,记录它们并使用 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 /endpoint 因内部服务器错误而崩溃,而不是通知用户需要参数。有没有办法使 par1 和 par2 成为必需的并保留文档功能?
你可以使用Ellipsis,如果你之前没有看到...
:它是一个特殊的单一值,使得查询required
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)
我正在尝试创建一个依赖于 HTTP GET 参数的 fastapi API 端点,记录它们并使用 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 /endpoint 因内部服务器错误而崩溃,而不是通知用户需要参数。有没有办法使 par1 和 par2 成为必需的并保留文档功能?
你可以使用Ellipsis,如果你之前没有看到...
:它是一个特殊的单一值,使得查询required
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)