FastAPI 애플리케이션에서 오류 처리는 클라이언트에게 유익한 응답을 제공하는 데 필수적입니다. 일반적으로 발생하는 문제 중 하나는 요청에서 추가 데이터 또는 유효하지 않은 데이터를 보낼 때 422 Unprocessable Entity 오류가 발생하는 것입니다. 이 문서에서는 이러한 시나리오를 처리하기 위해 오류 응답을 사용자 정의하는 방법을 보여줍니다.
다음 FastAPI 백엔드 예를 고려하십시오.
from fastapi import FastAPI app = FastAPI class Demo(BaseModel): content: str = None @app.post("/demo") async def demoFunc(d: Demo): return d.content
data = {와 같은 추가 데이터가 포함된 요청을 보낼 때 "content": "some text here"}aaaa, API는 다음 응답과 함께 422 오류를 반환합니다.
{ "detail": [ { "loc": [ "body", 47 ], "msg": "Extra data: line 4 column 2 (char 47)", "type": "value_error.jsondecode", "ctx": { "msg": "Extra data", "doc": "{\n \"content\": \"some text here\"}aaaaa", "pos": 47, "lineno": 4, "colno": 2 } } ] }
오류 응답을 사용자 정의하기 위해 FastAPI에서는 요청 유효성 검사 예외 처리기를 재정의할 수 있습니다. 필요한 모듈을 가져오고 사용자 정의 예외 처리기 함수를 정의하는 것부터 시작하세요.
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(), "body": exc.body, "custom msg": { "Your error message" } }), )
이 함수는 RequestValidationError 예외를 가로채고 사용자 정의 JSON 응답을 생성합니다. 오류 세부 정보, 요청 본문 및 사용자 정의 메시지를 포함할 수 있습니다.
예를 들어 잘못된 JSON 본문을 사용하면 이제 다음과 유사한 응답이 반환됩니다.
{ "detail": [ { "loc": ["body", 1], "msg": "invalid json", "type": "json.decoder.JSONDecodeError", "ctx": {} } ], "body": {}, "custom msg": { "Your error message" } }
또는 다음과 같습니다. 오류 메시지만 포함된 일반 텍스트 응답을 반환할 수 있습니다.
from fastapi.responses import PlainTextResponse @app.exception_handler(RequestValidationError) async def validation_exception_handler(request, exc): return PlainTextResponse(str(exc), status_code=422)
FastAPI에서 오류 응답 동작을 사용자 정의하면 API에 대해 더 유익하고 일관된 오류 처리를 제공할 수 있습니다. 이를 통해 사용자 경험이 향상되고 개발자와 API 소비자 모두의 디버깅이 단순화됩니다.
위 내용은 FastAPI에서 잘못된 요청에 대한 오류 응답을 사용자 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!