FastAPI(planner 코드리뷰 src.routes.events)
2025. 5. 2. 13:31ㆍ고급 웹프로그래밍
코드 리뷰
from fastapi import APIRouter # 라우팅을 모듈화 하기 위해 사용하는 클래스
from src.models.events import Event, EventUpdate
from src.database.connection import Database
event_router = APIRouter(
prefix ="/events",
tags=["Events"]
)
event_db = Database(Event) # 다른 모듈에서 정의한 함수와 인자 (models.events.py, database.connection.py)
@event_router.get("/", response_model=list[EVENT]) # 이 API(메뉴판)를 서버가(응답) 리스트의 형태로 데이터를 반환
async def get_all_events():
evnents = await event_db.get_all() # models.events에서 정의한 메서드를 받아서 사용
return events
@event_router.get("/{id}") # GET /events/{id} 로 요청을 받는다
async def get_event(id:int): # id를 인자로 받으며 타입은 int
event = await event_db.get(id) # models.events에서 정의 한 메서드
return event
@evnet_router.post("/"): # POST /events
async def create_event(event: Event):
await event_db.save(event)
return {"message": "이벤트가 생성되었습니다."}
@event_router.delete("/{id}") # DELETE /events/{id}
async def delete_event(id: int):
await event_db.delete(id)
return {"message": "이벤트를 삭제했다."}
@event_router.put("/{id}") # PUT/events/{id}
async def update_event(id: int, event: EventUpdate):
await event_db.update(id, event)
return {"message": "이벤트를 업데이트함."}
용어 설명
- APIRouter: 여러 API 경로를 하나의 그룹처럼 묶고 이를
app.include_route()
로 메인 앱에 등록할 수 있게 해주는 도구- Swagger UI나 postman에서 해당 경로 입력하면 해당 함수의 return 값이 뜨게 만듬
- prefix: 위 코드에서 /events로 적었으므로 그 아래
@event_router.get("/")
라고 적어도 자동으로GET /
이 아닌GET /evnents
라고 인식하는 것임, 즉 공통 접두어를 한 번에 지정 - tags: Swagger 문서에서 경로를 "그룹"으로 정리
- resoponse_model = list[] : 여러 개의 객체 반환
가 있다고 하면class Event(Document): id: int title: str
이런식으로 응답이 온다[ { "id": 1 title: "test" } ]
반응형
'고급 웹프로그래밍' 카테고리의 다른 글
FastAPI(planner 코드 리뷰 models.events) (0) | 2025.05.02 |
---|---|
FastAPI(planner 코드리뷰 src.routes.users) (0) | 2025.05.02 |
FastAPI(planner 코드 리뷰 src.main) (0) | 2025.04.30 |
MongoDB 연동하기 (0) | 2025.04.30 |
MongoDB (0) | 2025.04.30 |