🚀 Flask 프로젝트에서 routes.py와 services의 역할 이해하기
🎯 1️⃣ 전체 개요
구분역할 설명비유 🌟
routes.py | "문을 지키는 안내데스크" | 👉 건물 입구 |
services/*.py | 실제로 일을 처리하는 작업실(사무실) | 👉 백오피스 |
✅ routes.py = API 입구, 안내데스크
- 외부 요청(HTTP 요청, 예: POST, GET 등)이 오면 가장 먼저 처리.
- "무슨 요청인지" 파악하고, 적절한 services 함수로 전달.
- 서비스에서 받은 결과를 다시 사용자에게 응답(Response).
🌟 비유:
손님이 회사에 방문하면, 안내데스크(routes)가 "어떤 업무인가요?" 묻고, 해당 부서(services)로 연결해주는 역할.
✅ services/*.py = 실제 일 처리하는 작업실
- DB와 직접 소통하는 공간.
- SQLAlchemy를 사용해서 데이터 생성, 조회, 수정, 삭제(CRUD) 수행.
- 핵심 비즈니스 로직이 이곳에 집중.
🌟 비유:
안내데스크에서 전달받은 업무를 실제로 처리하는 사무실 직원 역할! 요청에 따라 DB에서 자료 찾기, 저장하기 등의 작업을 수행.
🎯 전체 흐름 정리
[ 외부 요청 (손님) ]
⬇️
routes.py 👉 "요청 파악 + 서비스 호출"
⬇️
services/*.py 👉 "DB 작업 수행"
⬇️
routes.py 👉 "결과를 사용자에게 전달"
💡 실전 예시
사용자가 /users로 회원가입 요청 (POST)
1️⃣ routes.py
@routes.route("/users", methods=["POST"])
def add_user():
data = request.json
return jsonify(users.create_user(data["name"], data["age"], data["gender"], data["email"]))
2️⃣ services/users.py
from app.models import User
from config import db
def create_user(name, age, gender, email):
user = User(name=name, age=age, gender=gender, email=email)
db.session.add(user)
db.session.commit()
return user.to_dict()
3️⃣ 결과 응답
{
"id": 1,
"name": "상인",
"email": "test@test.com"
}
🚨 최종 비유 정리
구분 | 역할 | 비유 |
routes.py | 요청을 받고 서비스에 전달 | 👉 안내데스크 |
services/ | 실제 DB 작업 처리 | 👉 사무실(업무팀) |
models.py | DB 테이블 설계도 | 👉 창고 구조(설계도) |
'기술블로그' 카테고리의 다른 글
MySQL TRUNCATE vs DELETE 차이점 정리 (0) | 2025.04.25 |
---|---|
🚀 Flask 프로젝트에서 ORM과 CRUD 구현하기 (SQLAlchemy 활용)1-3 (0) | 2025.04.24 |
🚀 Git Flow 브랜치 전략 초기 셋팅 가이드(1-1) (0) | 2025.04.24 |
Flask-Login 을 활용한 간단한 로그인 프로젝트 (0) | 2025.04.23 |
Flask 문의 내역 이메일 발송 시스템 구현 with 파머 (0) | 2025.04.23 |