[FastAPI] HTTP Status Code 기본 & CRUD FastAPI

gpg·2023년 8월 8일

FastAPI

목록 보기
1/2

기본적인 HTTP Status Code는 외워두면 편함

  • Todo List에 사용되는 CRUD 기능
  • 각 CRUD에 매치되는 HTTP Status Code 사용
  • FastAPI 기반


1. Status Code

2xx: 요청성공

상태코드내용
200 OK일반적인 요청 성공, GET / POST / PUT / PATCH
201 Created새로운 자원 생성, POST
204 No Content응답할 자원 없음, DELETE

4xx: 클라이언트 실패

상태코드내용
400 Bad Request요청이 잘못된 경우 (query param, body)
401 Unauthorized인증 실패
403 Forbidden권한문제 또는 잘못된 메서드
404 Not Found자원이 없는 경우 또는 잘못된 endpoint

5xx: 서버실패

상태코드내용
500 Internal Server Error일반적인 서버 에러
502 Bad GatewayReverse Proxy에서 서버 응답을 처리할 수 없는 경우
503 Service Unavailable서버가 요청을 처리할 수 없는 경우 (ex. 일시적 부하, 서버 다운)



2. FastAPI - 라이브러리

# HTTPException import
from fastapi import FastAPI, Body, HTTPException
from pydantic import BaseModel



3. FastAPI - CRUD 기본 + HTTP Status Code

# GET 메서드: 전체 읽기(Read)
@app.get("/todos", status_code=200)
def get_todos_handler(order: str | None = None):
    ret = list(todo_data.values())
    if order and order == "DESC":
        return ret[::-1]
    return ret
# GET 메서드: 일부 읽기(Read)
@app.get("/todos/{todo_id}", status_code=200)
def get_todo_handler(todo_id: int):
    todo = todo_data.get(todo_id)
    if todo:
        return todo
    raise HTTPException(status_code=404, detail="Todo Not Found.")
# POST 메서드: 생성(Create)
@app.post("/todos", status_code=201)
def create_todo_handler(request: CreateToDoRequest):
    todo_data[request.id] = request.dict()
    return todo_data[request.id]
# PATCH 메서드: 수정(Update)
@app.patch("/todos/{todo_id}", status_code=200)
def update_todo_handler(todo_id: int,
                        is_done: bool = Body(..., embed=True)):
    todo = todo_data.get(todo_id)
    if todo:
        todo["is_done"] = is_done
        return todo

    raise HTTPException(status_code=404, detail="Todo Not Found.")
# DELETE 메서드: 삭제(DELETE)
@app.delete("/todos/{todo_id}", status_code=204)
def delete_todo_handler(todo_id: int):
    todo = todo_data.pop(todo_id, None)
    if todo:
        return
    raise HTTPException(status_code=404, detail="Todo Not Found.")
profile
[Code.ZIP] macOS - install, setting, tutorial

0개의 댓글