본문 바로가기

Java/Spring

[Spring] REST + @RestController 정리, 설정

REST(Representational State Transfer)

- 하나의 URI(Uniform Resource Identifier)는 하나의 고유한 리소스(Resource)를 대표하도록 설계된다는 개념에 전송방식을 결합해서 원하는 작업을 지정한다.

- 예를 들어 '/board/123'은 게시물 중에서 123번이라는 고유한 의미를 가지도록 설계하고, 이에 대한 처리는 GET, POST 방식과 같이 추가적인 정보를 통해서 결정한다.

 

REST 방식은 이렇게 구성된다고 생각할 수 있다.

 

✓ REST 방식의 데이터 처리를 위한 여러 종류의 어노테이션

어노테이션 기능
@RestController Controller가 REST 방식을 처리하기 위한 것임을 명시
@ResponseBody 일반적인 JSP와 같은 뷰로 전달되는 게 아니라 데이터 자체를 전달하기 위한 용도
@PathVariable URL 경로에 있는 값을 파라미터로 추출하려고 할 때 사용
@CrossOrigin Ajax의 크로스 도메인 문제를 해결해주는 어노테이션
@RequestBody JSON 데이터를 원하는 타입으로 바인딩 처리

 


@RestController

- REST 방식에서 가장 먼저 기억해야 하는 점은 서버에서 전송하는 것이 순수한 데이터라는 점이다.

- 기존의 Controller에서 Model에 데이터를 담아서 View(JSP 등등)로 전달하는 방식이 아니므로 기존의 Controller와는 조금 다르게 동작한다.

 

- 스프링4에서부터는 @Controller 외에 @RestController라는 어노테이션을 추가해서 해당 Controller의 모든 메서드의 리턴 타입을 기존과 다르게 처리한다는 것을 명시한다.

- @RestController 이전에는 @Controller와 메서드 선언부에 @ResponseBody를 이용해서 동일한 결과를 처리할 수 있다.

- @RestController는 메서드의 리턴 타입으로 사용자가 정의한 클래스 타입을 사용할 수 있고, 이를 JSON 이나 XML로 자동으로 처리가 가능하다.

 

 

✓ 설정

https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind

 

Maven Repository: com.fasterxml.jackson.core » jackson-databind

General data-binding functionality for Jackson: works on core streaming API VersionRepositoryUsagesDate2.10.x2.10.2Central369Jan, 20202.10.1Central1,284Nov, 20192.10.0Central1,380Sep, 20192.10.0.pr3Central98Sep, 20192.10.0.pr2Central410Aug, 20192.10.0.pr1C

mvnrepository.com

객체를 JSON/XML로 변환시 사용

 

 

https://mvnrepository.com/artifact/com.google.code.gson/gson

 

Maven Repository: com.google.code.gson » gson

 

mvnrepository.com

JAVA 인스턴스를 JSON 타입의 문자열로 변환시 사용