ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링 MVC와 REST API!
    엘리스트랙 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

    '엘리스트랙' 카테고리의 다른 글

    프로젝트의 기획과 ERD 작성!  (0) 2024.01.10
    스프링 프로젝트 빌드!  (1) 2024.01.08
    스프링 시작 복습!  (0) 2023.12.31
    자바 람다, 스트림 복습!  (1) 2023.12.30
    JS DOM, Event 복습!  (1) 2023.12.27
Designed by Tistory.