[python] FastAPI 에러 처리 방법

FastAPI는 사용하기 쉬운 API 프레임워크로서, 빠르게 웹 API를 구축할 수 있는 기능을 제공합니다. 하지만 가끔 API에서 발생하는 에러를 적절하게 처리해야 할 때가 있습니다. 이번 글에서는 FastAPI에서의 에러 처리 방법에 대해 알아보겠습니다.

Index

  1. 기본 에러 처리
  2. 사용자 정의 에러 처리
  3. 예외 처리 미들웨어

기본 에러 처리

FastAPI는 기본적으로 HTTP 상태 코드를 반환하여 에러를 처리합니다. 예를 들어, 클라이언트가 잘못된 경로로 요청을 보내면 FastAPI는 자동으로 404 Not Found 상태 코드를 반환합니다. 이러한 기본 에러 처리는 FastAPI가 제공하는 기본 기능이며, 따로 설정할 필요가 없습니다.

사용자 정의 에러 처리

때로는 기본 에러 처리 이외에도 특정한 에러에 대해 독자적인 처리 방식을 구현해야 할 수 있습니다. 이를 위해 FastAPI는 HTTPException 클래스를 활용하여 사용자 정의 에러 처리를 구현할 수 있습니다. 다음은 사용자 정의 에러 처리의 간단한 예시입니다.

from fastapi import FastAPI, HTTPException

app = FastAPI()

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    if item_id == 0:
        raise HTTPException(status_code=400, detail="Item ID가 0입니다")
    return {"item_id": item_id}

위의 코드에서, item_id가 0인 경우 400 Bad Request 상태 코드와 함께 “Item ID가 0입니다” 메시지를 반환합니다.

예외 처리 미들웨어

더욱 복잡한 상황에서 에러를 처리해야 할 때는 예외 처리 미들웨어를 사용할 수 있습니다. 이를 통해 애플리케이션 전역에서 예외에 대한 처리 로직을 추가할 수 있습니다. 예를 들어, FastAPI 애플리케이션에서 예외 처리 미들웨어를 사용하여 로깅 및 특정 에러에 대한 추가적인 처리를 수행할 수 있습니다.

from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse

app = FastAPI()

@app.exception_handler(Exception)
async def exception_handler(request: Request, exc: Exception):
    # 예외 처리 로직 구현
    return JSONResponse(status_code=500, content={"message": "서버 오류"})

위의 예시에서, 모든 예외에 대해 500 Internal Server Error 상태 코드와 함께 “서버 오류” 메시지를 반환합니다.

결론

FastAPI에서의 에러 처리는 기본적으로 HTTP 상태 코드를 반환하는 방식을 제공합니다. 또한 HTTPException 클래스를 사용하여 사용자 정의 에러 처리를 구현할 수 있으며, 예외 처리 미들웨어를 통해 애플리케이션 전역에서의 예외 처리 로직을 추가할 수 있습니다. 에러 처리는 안정적이고 신뢰할 수 있는 API를 제공하기 위해 중요한 부분이므로 충분히 고려해야 합니다.

참고 자료