엘리스트랙

스프링 MVC와 REST API!

Zmann 2024. 1. 7. 00:15
728x90

 

 

MVC란?

model-view-controller로 소프트웨어 아키텍쳐 디자인 패턴의 한 종류이다. 사용자 인터페이스와 비즈니스 로직을 분리하고 각각을 독립적으로 유지해 유연하고 확장 가능한 코드가 생산 가능하다.

 

  1. Model (모델): 데이터와 데이터의 상태를 관리합니다. 모델은 데이터의 저장, 검색, 갱신 등과 같은 역할을 담당하며, 비즈니스 로직을 정의합니다.
  2. View (뷰): 사용자 인터페이스를 나타냅니다. 데이터의 시각적 표현이나 사용자에게 정보를 보여주는 부분을 담당합니다. 뷰는 모델의 상태를 표시하고, 사용자의 입력을 받아 컨트롤러로 전달합니다.
  3. Controller (컨트롤러): 사용자의 입력을 처리하고 그에 따라 모델과 뷰를 업데이트합니다. 컨트롤러는 모델과 뷰 간의 통신을 조정하며, 사용자의 액션에 따라 비즈니스 로직을 수행합니다.

 

Spring MVC의 동작 흐름

 

  1. 클라이언트의 요청:
    • 클라이언트가 웹 브라우저 등을 통해 어떤 URL을 요청합니다.
  2. DispatcherServlet의 동작:
    • 모든 요청은 DispatcherServlet이라 불리는 특별한 서블릿에 의해 처리됩니다.
    • DispatcherServlet은 클라이언트의 요청을 받고, Handler Mapping에게 어떤 컨트롤러가 해당 요청을 처리할지 물어봅니다.
  3. Handler Mapping:
    • Handler Mapping은 클라이언트의 요청과 어떤 컨트롤러가 처리할지를 결정합니다.
    • 요청된 URL을 분석하여 어떤 컨트롤러 클래스와 메서드가 처리해야 하는지를 찾습니다.
  4. Controller의 실행:
    • 선택된 컨트롤러의 메서드가 실행됩니다. 이 메서드는 비즈니스 로직을 수행하고, 데이터를 Model에 담거나 직접 응답을 생성합니다.
  5. Model과 View의 반환:
    • 컨트롤러는 Model과 View 정보를 담은 ModelAndView 객체를 반환합니다.
    • 또는 @ResponseBody 어노테이션 등을 통해 직접 데이터를 응답으로 보낼 수 있습니다.
  6. View Resolver의 동작:
    • 반환된 View의 이름을 실제 뷰 객체로 변환하는 데 View Resolver가 사용됩니다.
    • View Resolver는 뷰의 논리적인 이름과 물리적인 위치를 연결합니다.
  7. View의 렌더링:
    • 선택된 뷰는 데이터를 이용하여 최종 HTML 또는 다른 형태의 응답을 생성합니다.
  8. 응답 전송:
    • 생성된 응답이 클라이언트로 전송되어 화면에 표시됩니다.

 

 

REST API란?

REST(Representational State Transfer)는 네트워크 아키텍처 원리 중 하나로, 리소스를 표현하고 상태를 전송하기 위한 아키텍처 스타일입니다. RESTful API는 이러한 REST 원리를 따르는 API를 의미하며, REST API는 HTTP를 기반으로 한 웹 서비스의 한 형태입니다.

여기서 "API"는 Application Programming Interface로, 소프트웨어 간 상호 작용을 위한 인터페이스를 의미합니다. REST API는 웹 서비스 간에 데이터를 주고받을 수 있도록 설계된 API이며, 주로 웹 애플리케이션에서 사용됩니다.

 

REST API 주요 특징

  1. 자원 (Resource):
    • REST에서는 모든 것을 리소스로 표현합니다. 리소스는 고유한 식별자(URI)를 가지며, 서버에 존재하는 데이터 또는 서비스 등을 나타냅니다.
  2. 표현 (Representation):
    • 리소스의 상태는 하나 이상의 표현을 통해 나타내어집니다. 표현은 일반적으로 JSON 또는 XML 형식으로 데이터를 표현합니다.
  3. 상태 전이 (Stateless):
    • 클라이언트의 각 요청은 서버에 저장된 상태를 변경하지 않고 필요한 정보를 포함하여 전송됩니다. 서버는 각 요청을 독립적으로 처리하며, 클라이언트의 상태를 저장하지 않습니다.
  4. 연결 (Uniform Interface):
    • 일관된 인터페이스를 가짐으로써 클라이언트와 서버 간의 상호 작용을 단순화합니다. 이를 통해 서버와 클라이언트는 독립적으로 진화할 수 있습니다.
  5. HTTP 메서드 활용:
    • RESTful API에서는 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 리소스에 대한 행위를 정의합니다. 각 메서드는 특정한 의미를 가지며, 일반적으로 CRUD(Create, Read, Update, Delete) 작업을 표현합니다.

 

 

 

728x90