1. Spring MVC
>> Client에게 요청이 들어오면 Dispatcher Servlet에 의해 해당 Controller에게 요청을 넘기고 Controller는 데이터를 가공하여 View를 Dispatcher Servlet에게 전달하면 이를 Client에게 전달하는 방식이다.
2. Restful
>> Client 에게 요청이 들어오면 Dispatcher Servlet이 해당 컨트롤러 또는 RestController에게 전달하고 해당 컨트롤러에서 View를 리턴하는것이 아닌 데이터를 리턴한다. (JSON or XMl 형식)
>> Controller를 사용할경우에는 해당 요청메서드에 @ResponseBody 어노테이션을 붙여야 한다.
>> RestController는 Spring 4.x 버전부터 사용가능하다.
반환형으로 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 |