- @RestController는 기존 @Controller에서 사용하던 일반적인 타입이나 사용자가 정의한 타입(클래스)을 사용한다.
- 여기에 추가로 몇 가지 어노테이션을 이용하는 경우가 있다.
∙@PathVariable : 일반 컨트롤러에서도 사용이 가능하지만 REST 방식에서 자주 사용된다. URL 경로의 일부를 파라미터로 사용할 떄 이용
∙@RequestBody : JSON 데이터를 원하는 타입의 객체로 변환해야 하는 경우에 주로 사용
@PathVariable
- REST 방식에서는 URL 내에 최대한 많은 정보를 담으려고 노력한다.
- 예전에는 '?' 뒤에 추가되는 쿼리 스트링(query string)이라는 형태로 파라미터를 이용해서 전달되던 데이터들이 REST 방식에서의 경로의 일부로 차용되는 경우가 많다.
- 스프링 MVC에서는 @PathVariable 어노테이션을 이용해서 URL 상에 경로의 일부를 파라미터로 사용할 수 있다.
- 위의 URL에서 '{ }'로 처리된 부분은 컨트롤러의 메서드에서 변수로 처리가 가능하다.
- @PathVariable은 '{ }'의 이름을 처리할 때 사용한다.
- REST 방식에서는 URL 자체에 데이터를 식별할 수 있는 정보들을 표현하는 경우가 많으므로 다양한 방식으로 @PathVariable이 사용된다.
- @PathVariable을 적용하고 싶은 경우에는 '{ }'을 이용해서 변수명을 지정하고, @PathVariable을 이용해서 지정된 이름의 변숫값을 얻을 수 있다.
- 값을 얻을 때에는 int, double과 같은 기본 자료형은 사용할 수 없다.
@RequestBody
- @RequestBody는 전달된 요청(request)의 내용(body)을 이용해서 파라미터 타입으로 변환을 요구한다.
- 내부적으로 HttpMessageConverter 타입의 객체들을 이용해서 다양한 포맷의 입력 데이터를 변환할 수 있다.
- 대부분의 경우에는 JSON 데이터를 서버에 보내서 원하는 타이브이 객체로 변환하는 용도로 사용되지만, 경우데 따라서는 원하는 포맷의 데이터를 보내고, 이를 해석해서 원하는 타입으로 사용하기도 한다.
+ TEST
다양한 전송방식
- REST 방식의 데이터 교환에서 특이한 점은 기존의 GET/POST 외에 다양한 방식으로 데이터를 전달한다는 점이다.
처리작업 | 전송방식 |
Create | POST |
Read | GET |
Update | PUT |
Delete | DELETE |
예시)
처리 작업 | 전송방식 | URI |
등록 | POST | /members/new |
조회 | GET | /members/{id} |
수정 | PUT | /members/{id} + body (json 데이터 등) |
삭제 | DELETE | /member/{id} |
'Java > Spring' 카테고리의 다른 글
[Spring] 스프링 MVC의 기본 구조 (0) | 2020.02.29 |
---|---|
[Spring] 페이징 처리(dto, mapper) (0) | 2020.02.18 |
[Spring] @RestController의 반환 타입 (0) | 2020.02.14 |
[Spring] REST + @RestController 정리, 설정 (0) | 2020.02.13 |
[Spring] Transaction 정리, 설정 (0) | 2020.02.13 |