如何在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)

我得到的是这样的描述。

description example

当我尝试此操作时-得到了错误响应(按预期)。

response

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

what I want to suceed

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

是否可以使用FastAPI生成此描述?

解决方法

您可以将响应参数添加到您的路径操作中。

然后,您可以在此处传递模型。它将为该模型创建一个模式。

const props = {
  witnesses: [
  { account_id: 1,account_name: "Fred"},{ account_id: 2,account_name: "Joe" },{ account_id: 3 }]
};

const getName = witnessId => props.witnesses
   .find(el => el.account_id === witnessId)?.account_name ?? "N/A";

console.log(getName(1))
console.log(getName(2))
console.log(getName(3))
console.log(getName(4))

enter image description here