FooRequest:...@route" />

如何在FAST API视图上添加文档来发布身体模型?视图、模型、身体、文档

由网友(亿万星辰不及你)分享简介:例如,假设我们有两个端点: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正文抽象示例。

如何用最最最简单的方式理解一个FastAPI程序

那么我如何记录发布的身体模型?

推荐答案

您可以使用Configschema_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传递额外信息的方式相同,您也可以对PathQueryBody等执行相同的操作。

例如,您可以将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:
    
阅读全文

相关推荐

最新文章