본문 바로가기

Java/Spring Boot

[Spring Boot] Spring MVC (@RestController, @ResponseBody, @RequestMapping)

@Controller 어노테이션 사용시내부의 메소드에서 어떠한 값을

리턴하게되면view Resolver에 전달되어서 view 파일의 경로로 만들어졌다. 

요청에 대한 응답을 데이터로 반환받고 싶으면 @ResponseBody를 사용한다.

 

@RestController는 @Controller에서 @ResponseBody가 추가된것이고

@RestController의 주용도는 json 형태로 객체 데이터를 반환 하는 것이다.

 

@ResponseBody

@ResponseBody

메소드에 @GetMapping과 마찬가지로 달아주고 사용한다.

view를 handle하는 것이 아니고 데이터 자체를 반환 하기 위해 

리턴 값에 name을 주었다.

 

PostMan에서 Get 요청을 하게 되면 

데이터 반환
text/plain

리턴 값으로 데이터를 바로 반환 받고 컨텐츠 타입은 text/plain으로 들고온다

View Resolver로 가지않고 문자열로 들고 오는데

이는 @ResponseBody의 응답 속성으로 인한 것이다. 

 

@ResponseBody의 실행 흐름

Client -> Request -> Dispatcher Servlet -> Handler Mapping ->

 Controller (ResponseBody)-> Response -> Client 

 

@RestController

@RestController는 데이터 요청을 반환 할때 사용하고

@Controller 달리 @ResponseBody를 생성하지 않아도 사용이 가능하다.

@RestController 가 @Controller와 @ResponseBody의 상위에 있기 때문이다.

 

@RestController (문자열 반환)

문자열 반환
실행 결과

문자열 그 자체를 반환한다.

 

@RequestMapping

요청에 대해 어떤 Controller, 어떤 메소드가 처리할지 맵핑하기 위한 어노테이션이다.

@RequestMapping에  URL을 같이 명시하여 사용한다.

@RequestMapping

@RequestMapping의 맵핑주소는 /api/v1이다

restCon 메소드로 맵핑하기 위해서는

@GetMapping의 주소인 /test를 사용하여

/api/v1/test 로 사용한다.

 

위의 예제를 PostMan에서 Get요청을 하게되면 

데이터를 가지고 온다.

Postman 에서 get요청
실행 결과

 

@RestController (Json 형태로 반환)

 

먼저 Dto 클래스를 생성해준다. 

Dto 클래스

lombok 라이브러리인 @Data를 사용해서

생성시 변수를 사용할 수 있도록 해준다.

 

그리고 controller로 이동한다.

@RestController

TestDto를 생성하여 각각 값을 담아 준다.

 

그리고 Postman을 사용하여 get요청을 하게되면

get 요청
json 형태로 반환

json형태로 반환이 된다.