@Controller 어노테이션 사용시내부의 메소드에서 어떠한 값을
리턴하게되면view Resolver에 전달되어서 view 파일의 경로로 만들어졌다.
요청에 대한 응답을 데이터로 반환받고 싶으면 @ResponseBody를 사용한다.
@RestController는 @Controller에서 @ResponseBody가 추가된것이고
@RestController의 주용도는 json 형태로 객체 데이터를 반환 하는 것이다.
@ResponseBody
메소드에 @GetMapping과 마찬가지로 달아주고 사용한다.
view를 handle하는 것이 아니고 데이터 자체를 반환 하기 위해
리턴 값에 name을 주었다.
PostMan에서 Get 요청을 하게 되면
리턴 값으로 데이터를 바로 반환 받고 컨텐츠 타입은 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의 맵핑주소는 /api/v1이다
restCon 메소드로 맵핑하기 위해서는
@GetMapping의 주소인 /test를 사용하여
/api/v1/test 로 사용한다.
위의 예제를 PostMan에서 Get요청을 하게되면
데이터를 가지고 온다.
@RestController (Json 형태로 반환)
먼저 Dto 클래스를 생성해준다.
lombok 라이브러리인 @Data를 사용해서
생성시 변수를 사용할 수 있도록 해준다.
그리고 controller로 이동한다.
TestDto를 생성하여 각각 값을 담아 준다.
그리고 Postman을 사용하여 get요청을 하게되면
json형태로 반환이 된다.
'Java > Spring Boot' 카테고리의 다른 글
[Spring Boot] Spring MVC(@Service) (0) | 2022.07.26 |
---|---|
[Spring Boot] Spring MVC(@Controller, @GetMapping, @RequestParam) (0) | 2022.07.21 |
[Spring Boot] 프레임워크, 세팅 및 페이지 로드 (0) | 2022.07.14 |