REST API와 웹 MVC의 차이점
- 기존 웹 MVC
- 웹 애플리케이션에서 서버는 클라이언트(브라우저)에 HTML을 렌더링하여 응답합니다. 이때 주로 머스태치(Mustache), JSP와 같은 템플릿 엔진을 사용했습니다.
- MVC(Model-View-Controller)는 애플리케이션의 구조를 나누는 디자인 패턴입니다. 주로 웹 애플리케이션에서 사용자 인터페이스와 비즈니스 로직을 분리하기 위해 사용됩니다.
- Model: 애플리케이션의 데이터나 상태를 나타내며, 데이터베이스와의 상호작용을 처리합니다.
- View: 사용자에게 보여지는 UI 요소를 나타내며, 사용자 인터페이스를 생성합니다.
- Controller: 사용자의 요청을 처리하고, Model과 View를 연결하는 역할을 합니다. 사용자의 입력을 처리하고, 필요한 데이터를 가져와서 View에 전달합니다.
- REST API로 전환
- REST API는 서버가 데이터를 JSON 형식으로 응답하고, 클라이언트(React, Vue.js, 모바일 앱 등)가 해당 데이터를 받아 UI를 구성하는 방식입니다.
- 서버는 순수한 데이터를 제공하는 역할만 수행하고, 클라이언트는 UI를 처리하는 역할을 담당합니다.
- REST(Representational State Transfer)는 웹 아키텍처 스타일로, 웹 서비스를 설계하는 데 사용됩니다.
- REST API는 HTTP 프로토콜을 기반으로 하는 클라이언트-서버 아키텍처에서 데이터를 주고받는 방법을 정의합니다.
- REST는 상태를 저장하지 않으며, 각 요청은 독립적입니다. 즉, 클라이언트에서 보내는 요청은 이전의 요청과 관계없이 독립적으로 처리됩니다.
- 리소스(예: 사용자, 상품, 주문 등)에 대한 CRUD (Create, Read, Update, Delete) 작업을 HTTP 메서드(GET, POST, PUT, DELETE)를 사용하여 수행합니다.
왜 하는 걸까?
- 더 많은 클라이언트(웹, 모바일, 데스크탑 등)와 통신할 수 있기 때문에, 데이터와 UI를 분리하여 더 유연한 시스템을 만들 수 있습니다.
특징REST API웹 MVC
특징 | REST API | 웹 MVC |
목적 | 클라이언트와 서버 간의 데이터 전송 및 상호작용에 초점 | 사용자 인터페이스(UI)와 비즈니스 로직을 분리하고, 요청에 대한 응답을 처리 |
프로토콜 | HTTP (또는 HTTPS) 프로토콜을 사용 | 주로 HTTP 프로토콜을 사용 |
데이터 처리 방식 | HTTP 메서드를 통해 리소스에 대한 CRUD 작업 (예: GET, POST, PUT, DELETE) | HTTP 요청을 처리하고, 사용자가 요청한 페이지를 렌더링 (주로 HTML을 반환) |
응답 형식 | 일반적으로 JSON 또는 XML 형식으로 데이터를 반환 | HTML, JSON, XML 등의 응답을 반환 (웹 페이지 렌더링) |
상태 관리 | 무상태 (Stateless): 각 요청은 독립적으로 처리됨 | 상태 유지 (Stateful): 사용자의 상태를 세션을 통해 관리 |
URL 구조 | 리소스 기반 URL 구조 (예: /users, /products) | URL은 주로 페이지나 액션을 나타냄 (예: /home, /products/view) |
클라이언트-서버 | 클라이언트와 서버는 독립적으로 동작하며, 서버는 데이터와 상태만 관리 | 클라이언트와 서버가 페이지 렌더링과 비즈니스 로직을 함께 처리 |
클라이언트 역할 | 클라이언트는 서버에서 제공하는 데이터를 가져와서 표시 | 클라이언트는 주로 HTML을 요청하고, 서버는 이를 렌더링하여 반환 |
응답 처리 | 서버는 주로 데이터만 반환하고, 클라이언트가 UI를 렌더링 | 서버가 요청을 처리하고, 전체 HTML 페이지를 렌더링하여 클라이언트에 반환 |
사용 예시 | 모바일 앱, AJAX 기반 웹 애플리케이션, 마이크로서비스 | 전통적인 서버-클라이언트 웹 애플리케이션 (예: Spring, Django, Rails) |
'Spring boot' 카테고리의 다른 글
RestAPI 주소 설계 규칙 (0) | 2024.11.06 |
---|---|
CORS(Cross-Origin Resource Sharing) 이란 뭘까? (1) | 2024.11.06 |
@SessionAttribute 와 HttpSession을 멤버 필드로 주입 받는 것의 문제점 (2) | 2024.11.06 |
댓글 쓰기 및 삭제 및 인터셉터 적용(todo 인터셉터 수정 해야함) (0) | 2024.11.06 |
게시글 삭제 오류 해결 (0) | 2024.11.06 |