🚀 Flask 프로젝트에서 routes.py와 services의 역할 이해하기(1-2)

2025. 4. 24. 14:38·기술블로그

🚀 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
'기술블로그' 카테고리의 다른 글
  • MySQL TRUNCATE vs DELETE 차이점 정리
  • 🚀 Flask 프로젝트에서 ORM과 CRUD 구현하기 (SQLAlchemy 활용)1-3
  • 🚀 Git Flow 브랜치 전략 초기 셋팅 가이드(1-1)
  • Flask-Login 을 활용한 간단한 로그인 프로젝트
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (472) N
      • Python (31)
      • 프로젝트 (43)
      • 과제 (21)
      • Database (40)
      • 멘토링 (7) N
      • 특강 (18)
      • 기술블로그 (126) N
      • AI 분석 (4)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (34) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
🚀 Flask 프로젝트에서 routes.py와 services의 역할 이해하기(1-2)
상단으로

티스토리툴바