Python

[FastAPI] 응답 상태 코드 지정

비번변경 2024. 11. 25. 09:35

개요

아래 글에서 FastAPI에서 요청에 대한 응답을 보내는 기본적인 방법을 알아보았다.

2024.11.05-[FastAPI] response 형식 지정하기

2024.11.06-[FastAPI] 오류 처리 - HTTPException

기본적으로 요청 처리에 성공하면 HTTP 200 응답을 전달하는데, 필요한 경우 다른 상태 코드를 사용하여 응답해야 할 수도 있다.

이번 글에서는 API의 응답 상태 코드를 지정하는 방법을 정리한다.

 

 

status_code

응답 상태 코드는 경로 데코레이터에 status_code로 지정할 수 있다.

from fastapi import FastAPI

app = FastAPI()


@app.post("/items/", status_code=201)
async def create_item(name: str):
    return {"name": name}

status_code를 지정하면 FastAPI가 지정한 코드로 응답하고, 자동으로 API 문서에 반영된다.

 

숫자가 아닌 status에 정의되어 있는 상수를 사용하여 지정할 수도 있다.

from fastapi import status


@app.post("/items/", status_code=status.HTTP_202_ACCEPTED)
async def create_item(name: str):
    return {"name": name}

 

 

HTTP 상태 코드

HTTP 상태 코드에 대한 대략적인 정보는 다음과 같다.

  • 1XX : 정보용. 직접 사용되는 일은 많지 않고, 해당 상태 코드의 응답은 본문을 가질 수 없다.
  • 2XX : 성공 응답. 가장 많이 사용되며, 200은 성공, 201은 생성됨, 204는 내용 없음 등등을 의미한다.
  • 3XX : 리다이렉션용. 304 수정되지 않음을 제외하면 응답에 본문이 있을 수도 있고, 없을 수도 있다. 304는 응답에 본문을 가지지 않는다.
  • 4XX : 클라이언트 오류 응답. 404는 Not Found, 400은 일반적인 클라이언트 오류를 의미한다.
  • 5XX : 서버 오류. 응용 프로그램 코드나 서버의 일부에서 문제가 발생할 때 사용된다.

 

 

참고 문서

https://fastapi.tiangolo.com/ko/tutorial/response-status-code/