Menyesuaikan Respons Ralat dalam FastAPI
Apabila menerima permintaan JSON yang tidak sah, FastAPI biasanya mengembalikan ralat 422 Entiti Tidak Dapat Diproses dengan maklumat terperinci tentang isu tersebut. Walau bagaimanapun, adalah mungkin untuk menyesuaikan respons ralat ini dengan mesej dan struktur anda sendiri.
Salah satu cara untuk menangani perkara ini ialah dengan mengatasi pengendali pengecualian pengesahan permintaan lalai. Ini boleh dilakukan dengan melaksanakan penghias pengendali pengecualian tersuai. Berikut ialah contoh yang mengubah suai respons ralat untuk memasukkan mesej tersuai:
<code class="python">from fastapi import FastAPI, Body, Request, status from fastapi.encoders import jsonable_encoder from fastapi.exceptions import RequestValidationError from fastapi.responses import JSONResponse app = FastAPI() @app.exception_handler(RequestValidationError) async def validation_exception_handler(request: Request, exc: RequestValidationError): return JSONResponse( status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, content=jsonable_encoder({ "detail": exc.errors(), # optionally include the errors "body": exc.body, "custom msg": {"Your error message"} }), ) class Demo(BaseModel): content: str = None @app.post("/demo") async def demo_func(d: Demo): return d.content</code>
Pengendali pengecualian ini akan mengembalikan respons JSON dengan mesej tersuai, bersama-sama dengan ralat pengesahan asal dan kandungan permintaan.
Sebagai alternatif, anda boleh menyesuaikan respons ralat sebagai mesej teks biasa:
<code class="python">from fastapi.responses import PlainTextResponse @app.exception_handler(RequestValidationError) async def validation_exception_handler(request, exc): return PlainTextResponse(str(exc), status_code=422) </code>
Pengendali ini akan mengeluarkan rentetan teks biasa ringkas yang mewakili mesej ralat. Kedua-dua kaedah ini membolehkan anda menyesuaikan respons ralat untuk memberikan mesej yang lebih mesra pengguna atau khusus konteks kepada pengguna API anda.
Atas ialah kandungan terperinci Bagaimana untuk Menyesuaikan Respons Ralat dalam FastAPI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!