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

Bagaimana untuk Menyesuaikan Respons Ralat untuk Ralat Pengesahan dalam FastAPI?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-21 06:23:30813semak imbas

How to Customize Error Responses for Validation Errors in FastAPI?

Menyesuaikan Respons Ralat dalam FastAPI

Apabila menerima permintaan dengan data yang tidak sah atau tidak dijangka, selalunya wajar untuk mengembalikan respons ralat tersuai dan bukannya respons FastAPI lalai. Panduan ini menangani cara mengendalikan dan menyesuaikan respons ralat dalam FastAPI.

Secara khusus, isu yang diterangkan berkaitan dengan menerima data tambahan dalam badan permintaan, yang mengakibatkan ralat 422 Entiti Tidak Dapat Diproses dengan butiran ralat lalai. Matlamatnya adalah untuk mengendalikan ralat ini dengan anggun dan mengembalikan respons tersuai, seperti:

<code class="json">{
  "error": {
    "message": "Invalid JSON body"
  },
  "status": 0
}</code>

Untuk menyesuaikan respons ralat, FastAPI membenarkan mengatasi pengendali pengecualian untuk ralat pengesahan. Langkah berikut menggariskan cara untuk mencapai ini:

  1. Import perpustakaan yang diperlukan:

    from fastapi import FastAPI, Body, Request, status
    from fastapi.exceptions import RequestValidationError
    from fastapi.responses import JSONResponse
  2. Tentukan pengendali pengecualian tersuai:

    @app.exception_handler(RequestValidationError)
    async def validation_exception_handler(request: Request, exc: RequestValidationError):
        return JSONResponse(
            status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
            content={
                "detail": exc.errors(),  # optionally include the errors
                "body": exc.body,
                "custom msg": "Your error message"
            }
        )
  3. Daftar pengendali tersuai dengan apl FastAPI:

    app = FastAPI()
  4. Uji pengendali ralat tersuai:
    Hantar permintaan dengan data tidak sah (cth., data tambahan dalam badan permintaan) untuk mencetuskan pengendali pengecualian.

Alternatif Pengendali:

Sebagai alternatif, PlainTextResponse boleh digunakan untuk mengembalikan mesej ringkas:

<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>

Dengan mengikuti langkah ini, anda boleh mengendalikan ralat pengesahan dengan anggun dan menyesuaikan respons ralat yang dikembalikan oleh aplikasi FastAPI anda.

Atas ialah kandungan terperinci Bagaimana untuk Menyesuaikan Respons Ralat untuk Ralat Pengesahan 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