Python 使用Pydantic模型(FastAPI)设置swagger文档中查询参数的说明
这是继续下去的 我已经添加了一个模型来获取pydantic模型的查询参数Python 使用Pydantic模型(FastAPI)设置swagger文档中查询参数的说明,python,fastapi,Python,Fastapi,这是继续下去的 我已经添加了一个模型来获取pydantic模型的查询参数 class QueryParams(BaseModel): x: str = Field(description="query x") y: str = Field(description="query y") z: str = Field(description="query z") @app.get("/test-quer
class QueryParams(BaseModel):
x: str = Field(description="query x")
y: str = Field(description="query y")
z: str = Field(description="query z")
@app.get("/test-query-url/{test_id}")
async def get_by_query(test_id: int, query_params: QueryParams = Depends()):
print(test_id)
print(query_params.dict(by_alias=True))
return True
from fastapi import Depends, FastAPI, Query
app = FastAPI()
class CustomQueryParams:
def __init__(
self,
foo: str = Query(..., description="Cool Description for foo"),
bar: str = Query(..., description="Cool Description for bar"),
):
self.foo = foo
self.bar = bar
@app.get("/test-query/")
async def get_by_query(params: CustomQueryParams = Depends()):
return params
它按预期工作,但描述(添加在模型中)未反映在swagger ui中
但若请求主体使用了相同的模型,那个么描述将显示在swagger中
我是否遗漏了在swagger ui中获取查询参数(模型)描述的内容?这在Pydantic模型中是不可能的 获得所需结果的解决方法是使用自定义依赖类(或函数)而不是Pydantic模型
class QueryParams(BaseModel):
x: str = Field(description="query x")
y: str = Field(description="query y")
z: str = Field(description="query z")
@app.get("/test-query-url/{test_id}")
async def get_by_query(test_id: int, query_params: QueryParams = Depends()):
print(test_id)
print(query_params.dict(by_alias=True))
return True
from fastapi import Depends, FastAPI, Query
app = FastAPI()
class CustomQueryParams:
def __init__(
self,
foo: str = Query(..., description="Cool Description for foo"),
bar: str = Query(..., description="Cool Description for bar"),
):
self.foo = foo
self.bar = bar
@app.get("/test-query/")
async def get_by_query(params: CustomQueryParams = Depends()):
return params
根据fastapi导入、fastapi、查询
app=FastAPI()
类CustomQueryParams:
定义初始化__(
自己
foo:str=Query(…,description=“foo的酷描述”),
bar:str=Query(…,description=“对bar的酷描述”),
):
self.foo=foo
self.bar=bar
@app.get(“/test query/”)
异步def get_by_查询(参数:CustomQueryParams=Depends()):
返回参数
因此,您将把doc作为
工具书类
这样就可以了。但是想要pydantic模型你不能用pydantic做这个。不知道为什么要使用查询,它的属性类似于pydantic Field
Query(…)
用于生成OpenAPI模式。我不同意Arakkabal的回答,我能够做到这一点,OpenAPI Spec&Swagger允许这一点,并且查询参数有一个描述字段。这意味着你应该这样做,因为FastAPI是基于OpenAPI规范的。今天晚些时候我会再看一遍。谢谢,如果你发现什么,请告诉我