问题描述
我想生成所有可用响应的描述(连同代码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生成此描述?
解决方法
您可以将响应参数添加到您的路径操作中。
然后,您可以在此处传递模型。它将为该模型创建一个模式。
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))