점프 투 FastAPI의 2장 시작부분부터 2-04까지 내용

파일 구조는 이런 느낌...
domain 폴더의 answer, question, user 폴더에는 각각 db를 처리하는 파이썬 코드가 들어갈 것으로 보인다.
각 도메인에는 3가지 파일이 들어간다.
1. router: url과 전체적인 동작 관리
2. crud: 데이터의 create, read, update, delete 처리
3. schema: 입출력 관리
https://github.com/pahkey/fastapi-book/tree/v2.04.4
GitHub - pahkey/fastapi-book
Contribute to pahkey/fastapi-book development by creating an account on GitHub.
github.com
오늘 한 내용은 2-04 까지...
sqlalchemy로 db 생성, 조회, 변경, 삭제를 해보았고
/api/question 도메인에서 db에 존재하는 질문 목록 불러오는 기능을 구현했다.
# question_router.py
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from database import get_db
from domain.question import question_schema, question_crud
router = APIRouter(
prefix="/api/questions",
)
@router.get("/list", response_model=list[question_schema.Question])
def question_list(db: Session = Depends(get_db)):
_question_list = question_crud.get_question_list(db)
return _question_list
# question_crud.py
from models import Question
from sqlalchemy.orm import Session
def get_question_list(db: Session):
question_list = db.query(Question)\
.order_by(Question.create_date.desc())\
.all()
return question_list
# question_schema.py
import datetime
from pydantic import BaseModel
class Question(BaseModel):
id: int
subject: str
content: str
create_date: datetime.datetime
schema에는 question 테이블 구조가 정의되어있다. pydantic이라는 라이브러리로 유효성을 검증
crud는 sqlalchemy orm을 활용해서 db에서 Question 목록을 가져온다.
router는 /api/questions/list 의 동작이 정의되어있는데, 이는 crud 코드의 get question list를 실행한다.


fastapi의 docs 기능을 통해 question router를 테스트해본 모습
'MJSEC 활동 > 백엔드(2025-2학기)' 카테고리의 다른 글
| 백엔드 4주차 / 질문 목록 화면, 답변 등록 구현 (0) | 2025.11.06 |
|---|---|
| 백엔드 2주차 / DB, Git (0) | 2025.10.26 |
| 백엔드 1주차 / Web 소개, Open API 사용 (0) | 2025.09.25 |
댓글