>  기사  >  백엔드 개발  >  FastAPI의 검증 오류에 대한 오류 응답을 사용자 정의하는 방법은 무엇입니까?

FastAPI의 검증 오류에 대한 오류 응답을 사용자 정의하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-21 06:23:30697검색

How to Customize Error Responses for Validation Errors in FastAPI?

FastAPI에서 오류 응답 사용자 정의

유효하지 않거나 예상치 못한 데이터가 포함된 요청을 받을 때, 기본 FastAPI 응답. 이 가이드에서는 FastAPI에서 오류 응답을 처리하고 사용자 정의하는 방법을 다룹니다.

구체적으로 설명된 문제는 요청 본문에서 추가 데이터를 수신하는 것과 관련되어 있으며 이로 인해 기본 오류 세부 정보와 함께 422 처리할 수 없는 엔터티 오류가 발생합니다. 목표는 이 오류를 적절하게 처리하고 다음과 같은 사용자 정의된 응답을 반환하는 것입니다.

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

오류 응답을 사용자 정의하기 위해 FastAPI에서는 유효성 검사 오류에 대한 예외 처리기를 재정의할 수 있습니다. 다음 단계에서는 이를 달성하는 방법을 설명합니다.

  1. 필요한 라이브러리 가져오기:

    from fastapi import FastAPI, Body, Request, status
    from fastapi.exceptions import RequestValidationError
    from fastapi.responses import JSONResponse
  2. 정의 사용자 정의 예외 핸들러:

    @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. FastAPI 앱에 사용자 정의 핸들러 등록:

    app = FastAPI()
  4. 사용자 정의 오류 핸들러 테스트:
    잘못된 데이터(예: 요청 본문의 추가 데이터)가 포함된 요청을 보내 예외 핸들러를 트리거합니다.

대안 처리기:

또는 PlainTextResponse를 사용하여 간단한 메시지를 반환할 수 있습니다.

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

이 단계를 수행하면 유효성 검사 오류를 적절하게 처리하고 반환된 오류 응답을 사용자 지정할 수 있습니다. FastAPI 애플리케이션을 이용하세요.

위 내용은 FastAPI의 검증 오류에 대한 오류 응답을 사용자 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.