본문 바로가기
dev/Spring

[Spring] Spring MVC vs RESTful

by dev_Step 2022. 6. 16.

 

1. Spring MVC

  >> Client에게 요청이 들어오면 Dispatcher Servlet에 의해 해당 Controller에게 요청을 넘기고 Controller는 데이터를 가공하여 View를 Dispatcher Servlet에게 전달하면 이를 Client에게 전달하는 방식이다.

view 리턴

 

 

2. Restful

   >> Client 에게 요청이 들어오면 Dispatcher Servlet이 해당 컨트롤러 또는 RestController에게 전달하고 해당 컨트롤러에서 View를 리턴하는것이 아닌 데이터를 리턴한다. (JSON or XMl 형식)

   >> Controller를 사용할경우에는 해당 요청메서드에 @ResponseBody 어노테이션을 붙여야 한다.

   >> RestController는 Spring 4.x 버전부터 사용가능하다.

Body를 통해서 데이터를 리턴한다 이때 Body와 제네릭의 형식을 맞춰줘야 한다.

 

반환형으로 ResponseEntity를 사용하는 이유는 Value값만 리턴하는게 아니라, 해당 데이터 처리에 대한 상태코드를 같이 보내주기 위해서 사용하였다.

 

또한 위에서 사용된 PathVariable 의 경우는 @어노테이션에서 지정한 매개변수와 일치시켜 주면된다.

@RequsetMapping(value="/api/v1/check/{no}", method=RequestMethod.DELETE) 
와 같이 @RequsetMapping으로도 표현할 수 있다.

 

 

 

===========================================================================================

 

REST

 >> HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)를 명시하고, 

      HTTP METHOD를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미

   -- 자원 (웹상의 데이터나 기능들)

>> REST는 자원 기반의 구조(ROA : Resource Oriented Architecture) 설계의 중심에 Resource가 있고,

HTTP Mehtod를 통해 Resouce를 처리하도록 설계된아키텍처, 웹 사이트의 이미지, 텍스트, DB내용등의 모든 자원에 고유한 ID인 HTTP URI를 부여한다.

 

>> 실용적인 RESTful 디자인의 첫번째 원칙은 간결하고 직관적인 URL을 유지하는것

 

 

REST 구성

자원(Resource) URI
행위(Verb) HTTP Method
표현(Representations)

 

HTTP Method

GET 서버로 부터 데이터를 취득
POST 서버에 데이터를 추가, 작성 등
PUT 서버의 데이터를 갱신, 작성
DELETE 서버의 데이터를 삭제
HEAD 서버 리소스의 헤더(메타 데이터의 취득)
OPTIONS 리소스가 지원하고 있는 메소드의 취득
PATCH 리소스의 일부분을 수정
CONNECT 프로시 동작의 터널 접속을 변경

 

예시 MVC 요청 Restful 요청
글읽기 [GET] URL/read?b_no=1111 [GET] URL/1111
글쓰기 [POST] URL/wrtite [POST] URL
글삭제 [GET] URL/delete?b_no=1111 [DELETE] URL/1111
글수정 [POST] URL/update [PUT] URL/1111

'dev > Spring' 카테고리의 다른 글

[Spring] 데이터 검증  (0) 2022.06.18
[Spring] 데이터 변환  (0) 2022.06.18
[Spring] 예외처리2  (0) 2022.06.14
[Spring] 예외처리  (0) 2022.06.13
[Spring] Session  (0) 2022.06.13