由网友(亿万星辰不及你)分享简介:例如,假设我们有两个端点:class FooRequest(BaseModel):data: str@router.post("/foo/", response_model=FooRequest)async def foo_view(data: FooRequest) -> FooRequest:...@route...
例如,假设我们有两个端点:
class FooRequest(BaseModel):
data: str
@router.post("/foo/", response_model=FooRequest)
async def foo_view(data: FooRequest) -> FooRequest:
...
@router.get("/bar/", response_model=FooRequest)
async def bar_view(data: str = Query(..., description="Data param")) -> FooRequest:
...
在swagger UI/bar/
终结点将具有正确记录的查询参数,/foo/
将具有一些不带任何描述的POST正文抽象示例。
那么我如何记录发布的身体模型?
推荐答案
您可以使用Config
和schema_extra
声明一个PYDANIC模型的示例。
class FooRequest(BaseModel):
data: str
class Config:
schema_extra = {
"FooRequest": {
"name": "Foo Request",
"description": "Data param",
}
}
还可以使用Field
为您的JSON架构声明额外信息。
from pydantic import Field
...
class FooRequest(BaseModel):
data: str = Field(..., example="Data param for Foo Request")
description: Optional[str] = Field(None, example="Description for Foo")
向Field
传递额外信息的方式相同,您也可以对Path
、Query
、Body
等执行相同的操作。
例如,您可以将Body请求的示例传递给Body
:
from fastapi import Body
...
class FooRequest(BaseModel):
data: str
@router.post("/foo/", response_model=FooRequest)
async def foo_view(data: FooRequest = Body(
...,
example={
"name": "Foo Request",
"description": "data param",
},
),
) -> FooRequest:
相关推荐
最新文章