概要
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 件のコメント:
コメントを投稿