FastAPI - 如何在响应中使用 HTTPException?

FastAPI - How to use HTTPException in responses?

文档建议引发带有客户端错误的 HTTPException,这很好。 但是我怎样才能按照 HTTPException 的模型在文档中显示这些特定错误呢?表示带有“详细信息”键的字典。

以下内容不起作用,因为 HTTPException 不是 Pydantic 模型。

@app.get(
    '/test', 
    responses={
        409 : {
            'model' : HTTPException, 
            'description': 'This endpoint always raises an error'
        }
    }
)
def raises_error():
    raise HTTPException(409, detail='Error raised')

是的,它不是有效的 Pydantic 类型,但是由于您可以创建自己的模型,因此很容易为其创建模型。

from fastapi import FastAPI
from fastapi.exceptions import HTTPException
from pydantic import BaseModel


class Dummy(BaseModel):
    name: str


class HTTPError(BaseModel):
    detail: str

    class Config:
        schema_extra = {
            "example": {"detail": "HTTPException raised."},
        }


app = FastAPI()


@app.get(
    "/test",
    responses={
        200: {"model": Dummy},
        409: {
            "model": HTTPError,
            "description": "This endpoint always raises an error",
        },
    },
)
def raises_error():
    raise HTTPException(409, detail="Error raised")

相信这就是你所期待的