2024年6月19日水曜日

FastAPI のデフォルトのバリデーションエラーをハンドリングするサンプルコード

FastAPI のデフォルトのバリデーションエラーをハンドリングするサンプルコード

概要

RequestValidationError をハンドリングします

環境

  • macOS 11.7.10
  • Python 3.11.6
  • fastapi 0.111.0

サンプルコード

Request と RequestValidationError のリファレンスは参考サイトに記載しています

from fastapi import FastAPI
from fastapi.exceptions import RequestValidationError
from pydantic import BaseModel, Field
from starlette.requests import Request
from starlette.responses import JSONResponse

app = FastAPI()


class Item(BaseModel):
    message: str = Field(max_length=10)


@app.exception_handler(RequestValidationError)
async def validation_exception_handler(request: Request, exc: RequestValidationError):
    # print(request)
    errs = exc.errors()
    print(errs)
    return JSONResponse(
        {"error_field": errs[0]["loc"][1], "message": errs[0]["msg"]}, status_code=400
    )


@app.post("/")
async def post_msg(item: Item):
    return {
        "message": item.message,
    }

最後に

errors で取得した情報は配列なので扱いには注意しましょう

参考サイト

0 件のコメント:

コメントを投稿