如何在 FastAPI 中生成响应描述

我想生成所有可用响应的描述(以及代码 200 示例),这些响应在代码中表示,如下所示。


from typing import Any


import uvicorn

from fastapi import FastAPI, HTTPException


router = FastAPI()

from pydantic import BaseModel


class FileItemBase(BaseModel):

    current_project: str = "Test project"


class FileItemInDBBase(FileItemBase):

    id: int

    folder_path: str


    class Config:

        orm_mode = True


class FileResponse(FileItemInDBBase):

    pass


@router.get("/", response_model=FileResponse)

def example_code() -> Any:

    """

    # beautiful description

    to demonstrate functionality

    """

    demo=True

    if demo:

        raise HTTPException(418, "That is a teapot.")

if __name__ =="__main__":

    uvicorn.run(router)

我得到的就是这样的描述。

http://img4.sycdn.imooc.com/64c1cda6000159d015051253.jpg

当我尝试这个时 - 我收到错误响应(如预期)。

http://img1.sycdn.imooc.com/64c1cdb50001fc5917231267.jpg

我想要的是示例响应中包含的错误的描述,如下所示。前端开发人员可以查看此描述并以正确的方式处理此类情况,而无需测试 API。

http://img3.sycdn.imooc.com/64c1cdc60001c84911911019.jpg

我知道如何在 OpenAPI规范内制作它。

有没有办法用 FastAPI 生成这个描述?


FFIVE
浏览 49回答 1
1回答

GCT1015

您可以将响应参数添加到路径操作中。然后你可以将你的模型传递到那里。它将为该模型创建一个架构。class FileItemBase(BaseModel):    current_project: str = "Test project"@app.get("/", response_model=FileItemBase, responses={418: {"model": FileItemBase}})def example_code():    """    # beautiful description    to demonstrate functionality    """    demo = True    if demo:        raise HTTPException(418, "That is a teapot.")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python