[FastAPI] HTTP 상태 코드 변경

JinUk Lee·2023년 12월 19일
0

FastAPI

목록 보기
5/9

FastAPI에서는 HTTP 응답 상태코드를 직접 지정해줄 수 있다.


from typing import Union

from fastapi import FastAPI, Path, Query, status

app = FastAPI()


@app.get("/items/{item_id}", status_code=201)
async def read_items(
    item_id: int = Path(title="The ID of the item to get"),
    q: Union[str, None] = Query(default=None, alias="item-query"),
):
    results = {"item_id": item_id}
    if q:
        results.update({"q": q})
    return results

@app.get("/items/{item_id}", status_code=201)

이 부분이 HTTP 응답 코드를 지정하는 부분이다.

get 메소드는 제대로 받았다면 상태코드 200으로 응답하는데, 201로 변경했기 때문에 응답도 201로 날라온다.

또한, 조건에 따라 상태 코드를 다르게 반환할 수 있다.

조건부 상태코드


from fastapi import FastAPI, Response, status

app = FastAPI()

tasks = {"foo": "Listen to the Bar Fighters"}


@app.put("/get-or-create-task/{task_id}", status_code=200)
def get_or_create_task(task_id: str, response: Response):
    if task_id not in tasks:
        tasks[task_id] = "This didn't exist before"
        # 조건부 상태코드 지정
        response.status_code = status.HTTP_201_CREATED
    return tasks[task_id]

Response 유형의 매개변수를 선언하고 status_code를 지정하여 조건부 상태코드를 변경 가능하다.

profile
개발자 지망생

0개의 댓글