はじめに FastAPIを利用していると、たびたび422エラーが発生することがあります。 これは主に「リクエストのデータの型が、サーバが期待しているものと異なる」場合に発生します。 デフォルト状態では、FastAPIはこの様なエラーが発生した際に、その詳細について出力しません。 そのため、なぜエラーが起きたか?を確認できず、しばしば困ったことになります。 今回はデバッグ向けに、422エラーが発生した際にログを出力するように設定しよう、というの内容です。 解決方針 FastAPIがリクエストのバリデーションに失敗した際のカスタム例外ハンドラを設定し、 422エラーを返す際にエラー内容を出力するようにします。 実装 例として、POSTのエンドポイントを用意します。 from pydantic import BaseModel from fastapi import FastAPI, app =
![FastAPIの422エラー(Unprocessable Entity)をデバッグする - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/dbdd2548272e0b9cb7890cc3f83f5df9dbe0b87f/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9RmFzdEFQSSVFMyU4MSVBRTQyMiVFMyU4MiVBOCVFMyU4MyVBOSVFMyU4MyVCQyVFRiVCQyU4OFVucHJvY2Vzc2FibGUlMjBFbnRpdHklRUYlQkMlODklRTMlODIlOTIlRTMlODMlODclRTMlODMlOTAlRTMlODMlODMlRTMlODIlQjAlRTMlODElOTklRTMlODIlOEImdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTY1YTMzNWRmZmU5ZDNmYjFmMjBhYzk5MzkxZDZiYWU1%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTcxNiZ0eHQ9JTQwa3VydW1hZWJpNjUmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zMiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTAyYTQxNTljYjM0OTk3ODA2NDViYjJkMzMzMzcyYTFl%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Dc3593f018b3d214c22fd5af36fcc29f4)