- by chatgpt
1. 클라이언트(Client)
- 사용자가 브라우저나 앱을 통해 서버에 요청을 보냅니다.
- 예: "모든 상품 목록을 보여줘!" (HTTP GET 요청)
- 요청은 서버의 **라우트(Routes)**로 전달됩니다.
2. 서버(Server)
서버는 클라이언트 요청을 처리하는 중심 역할을 하며, Routes, Controller, Model이라는 3가지 주요 구성 요소로 나뉩니다.
- 1) Routes (라우트):
- 요청의 "길 안내자" 역할을 합니다.
- 클라이언트의 요청(URL과 메서드)을 보고, 어떤 Controller가 처리할지 연결해줍니다.
- 예:
- /products로 GET 요청이 오면 getAllProducts라는 Controller로 연결.
- 2) Controller (컨트롤러):
- 요청의 "작업 관리자"입니다.
- 비즈니스 로직(데이터 처리, 검증 등)을 수행하고, 데이터가 필요하면 Model에 요청을 보냅니다.
- 예:
- 상품 목록을 데이터베이스에서 가져와서 JSON 형태로 클라이언트에 응답.
- 3) Model (모델):
- 데이터베이스와 직접 연결되어 "데이터 전문가" 역할을 합니다.
- Controller의 요청에 따라 데이터를 읽거나 쓰는 작업을 수행합니다.
- 예:
- 데이터베이스에서 상품 정보를 가져오거나 새로운 상품을 추가.
3. 데이터베이스(Database)
- 데이터를 저장하고 관리하는 곳입니다.
- Model이 데이터베이스와 직접 통신하며 필요한 데이터를 가져오거나 수정합니다.
- 예: 상품 목록, 사용자 정보 등.
요청 처리 흐름 요약
- 클라이언트: 요청을 보냄 (예: "상품 목록을 달라").
- Routes: 요청을 적절한 Controller로 전달.
- Controller: 요청을 처리하고 데이터가 필요하면 Model에 요청.
- Model: 데이터베이스에서 데이터를 가져오거나 저장.
- Controller: 데이터를 받아서 클라이언트에 응답.
- 클라이언트: 결과를 화면에 보여줌.
예시: 상품 목록 가져오기
- 클라이언트가 /products로 GET 요청을 보냄.
- Routes: 요청을 getAllProducts Controller로 전달.
- Controller: 상품 목록을 가져오기 위해 Model에 요청.
- Model: 데이터베이스에서 상품 목록을 가져옴.
- Controller: 데이터를 클라이언트가 이해할 수 있는 형태(JSON)로 변환.
- Routes: 응답을 클라이언트에 전달.
- 클라이언트: 받은 데이터를 화면에 표시.
비유로 설명
- 클라이언트(Client): "피자를 주문하는 고객"
- Routes: "전화 받는 직원" (누구에게 요청을 전달할지 결정)
- Controller: "주문을 관리하고 피자 만들도록 주방에 전달"
- Model: "주방에서 피자를 만드는 요리사"
- Database: "재료를 보관하는 창고"
이 구조를 통해 각자 역할을 나눠서 효율적이고 관리하기 쉬운 코드를 작성할 수 있습니다.
'개발' 카테고리의 다른 글
풀스택 개발을 위한 계층별 최신 기술 스택 (2) | 2024.12.20 |
---|---|
리액트 기반 ui 구축 (1) | 2024.12.20 |
클라이언트와 서버의 os내 깔려있는 프로그램들 비교 (0) | 2024.11.29 |
데이터베이스로 접근하는 두 가지 방법(my sql) (0) | 2024.11.23 |
프로그램(앱)의 빌드 전과 빌드 후 차이점 (1) | 2024.11.21 |