1. 기능 개요
FastAPI를 이용해 기본적인 "할 일 관리" API를 구현합니다. 이 API는 다음의 주요 기능을 포함합니다.
구분(기능)방식URI본문응답과 관련 내용
할 일 추가 | POST | /todo | { "id": num, "item": str } | "할 일을 추가합니다." |
할 일 목록 조회 | GET | /todo | 없음 | 할 일 목록 반환 |
할 일 상세 조회 | GET | /todo/{todo_id} | 없음 | 지정 ID의 할 일 반환 |
할 일 검색 | GET | /todo/search?item= | 없음 | 검색 조건에 맞는 할 일 반환 |
할 일 수정 | PUT | /todo/{todo_id} | { "item": str } | "할 일을 수정했습니다." |
할 일 삭제 | DELETE | /todo/{todo_id} | 없음 | "할 일을 삭제했습니다." |
2. 기능 구현
2.1 기본 모델 정의 (model.py)
from pydantic import BaseModel
class Todo(BaseModel):
id: int
item: str
class TodoItem(BaseModel): # 수정 시 사용하는 모델
item: str
2.2 API 라우터 구현 (todo.py)
from fastapi import APIRouter, Path, Query
from model import Todo, TodoItem
todo_router = APIRouter()
todo_list = [] # 메모리 내 데이터 저장
# 1. 할 일 추가
@todo_router.post("/todo")
def add_todo(todo: Todo) -> dict:
todo_list.append(todo)
return {"message": "할 일을 추가합니다."}
# 2. 할 일 목록 조회
@todo_router.get("/todo")
def retrives_todo() -> dict:
return {"todos": todo_list}
# 3. 할 일 검색
@todo_router.get("/todo/search")
def search_todos(item: str = Query(..., min_length=2, max_length=10)) -> dict:
result = [todo for todo in todo_list if item in todo.item]
return {"todos": result}
# 4. 할 일 상세 조회
@todo_router.get("/todo/{todo_id}")
def retrive_todo(todo_id: int = Path(..., title="조회할 할 일의 ID", ge=1)) -> dict:
for todo in todo_list:
if todo.id == todo_id:
return {"todo": todo}
return {"message": "일치하는 할 일이 없습니다."}
# 5. 할 일 수정
@todo_router.put("/todo/{todo_id}")
def update_todo(
todo: TodoItem, todo_id: int = Path(..., title="수정할 할 일의 ID", ge=1)
) -> dict:
for td in todo_list:
if td.id == todo_id:
td.item = todo.item
return {"message": "할 일을 수정했습니다."}
return {"message": "일치하는 할 일이 없습니다."}
# 6. 할 일 삭제
@todo_router.delete("/todo/{todo_id}")
def delete_todo(todo_id: int = Path(..., title="삭제할 할 일의 ID", ge=1)) -> dict:
for td in todo_list:
if td.id == todo_id:
todo_list.remove(td)
return {"message": "할 일을 삭제했습니다."}
return {"message": "일치하는 할 일이 없습니다."}
3. 테스트
API를 테스트하기 위해 curl 명령어를 사용합니다.
3.1 할 일 추가curl http://localhost:8000/todo -X POST -d '{ "id": 1, "item": "First Todo" }' -H "Content-Type: application/json"
# {"message":"할 일을 추가합니다."}
3.2 할 일 목록 조회
curl http://localhost:8000/todo
# {"todos":[{"id":1,"item":"First Todo"}]}
3.3 할 일 검색
curl http://localhost:8000/todo/search?item=First
# {"todos":[{"id":1,"item":"First Todo"}]}
3.4 할 일 수정
curl http://localhost:8000/todo/1 -X PUT -d '{ "item": "Updated Todo" }' -H "Content-Type: application/json"
# {"message":"할 일을 수정했습니다."}
3.5 할 일 삭제
curl http://localhost:8000/todo/1 -X DELETE
# {"message":"할 일을 삭제했습니다."}
3.6 수정된 목록 확인
curl http://localhost:8000/todo
# {"todos":[]}
FastAPI를 사용하면 간단한 기능도 빠르고 효율적으로 개발할 수 있습니다. 이번 할 일 관리 API를 기반으로 다양한 기능(예: 사용자 인증, 데이터베이스 연결 등)을 확장하여 프로젝트를 발전시킬 수 있습니다.
*생성형 AI 활용한 클라우드&보안 전문가 양성캠프 과정의 교육내용 정리 자료입니다.
'코딩 > 파이썬' 카테고리의 다른 글
[새싹 성동 2기] FastAPI 쿼리 매개변수와 Query 클래스 활용법 (1) | 2024.12.16 |
---|---|
[새싹 성동 2기] FastAPI 경로 매개변수와 Path 클래스를 활용한 유효성 검사 (0) | 2024.12.16 |
[새싹 성동 2기] Pydantic 모델을 사용한 요청 본문 검증 (0) | 2024.12.16 |
[새싹 성동 2기] FastAPI 라우팅 가이드 (0) | 2024.12.11 |
[새싹 성동 2기] FastAPI로 간단한 웹 애플리케이션 만들기 (0) | 2024.12.11 |