Bagaimana untuk Menyesuaikan Respons Ralat untuk Ralat Pengesahan dalam FastAPI?

Mary-Kate Olsen
Lepaskan: 2024-10-21 06:23:30
asal
695 orang telah melayarinya

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>
Salin selepas log masuk

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
    Salin selepas log masuk
  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"
            }
        )
    Salin selepas log masuk
  3. Daftar pengendali tersuai dengan apl FastAPI:

    app = FastAPI()
    Salin selepas log masuk
  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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!