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

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

Mary-Kate Olsen
풀어 주다: 2024-10-21 06:23:30
원래의
826명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿