Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menyesuaikan Respons Ralat dalam FastAPI?

Bagaimana untuk Menyesuaikan Respons Ralat dalam FastAPI?

DDD
DDDasal
2024-10-21 06:32:29946semak imbas

How to Customise Error Responses in FastAPI?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn