【问题标题】:How to generate response decriptions in FastAPI如何在 FastAPI 中生成响应描述
【发布时间】:2020-09-09 14:32:00
【问题描述】:

我想生成所有可用响应的描述(以及代码 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)

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

当我尝试这个时 - 我得到了一个错误响应(如预期的那样)。

我想要的是示例响应中包含的错误描述,就像这里一样。前端开发人员可以查看此描述并以正确的方式处理此类案例,而无需测试 API。

我知道如何在 OpenAPI specs 中实现它。

有没有办法使用 FastAPI 生成此描述?

【问题讨论】:

    标签: python swagger openapi documentation-generation fastapi


    【解决方案1】:

    您可以在路径操作中添加响应参数。

    然后你可以在那里传递你的模型。它将为该模型创建一个架构。

    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.")
    

    【讨论】:

    • 谢谢!似乎 fastAPI 无法获取引发 HTTPexception (还没有?@tiangolo ;))。 Here是代码复用的链接。
    • @Eugene 不客气,您能否详细说明我想帮忙的“无法获取引发 HTTPException”:)
    • 我的意思是在整个代码中找出它可以引发这样的异常以自动记录它,而无需自定义响应定义。正如我猜想的那样,只有通过一些午餐前的代码分析才有可能。为了自动生成它,应该创建一些本机 FastAPI 异常类,它将向 FastAPI 提供所需的信息。我猜对了吗?
    猜你喜欢
    • 1970-01-01
    • 2013-11-16
    • 2020-10-12
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多