@Controller
스프링 MVC 패턴에 따라 응답 결과를 포함하여 View를 호출합니다.
DispatcherServlet -> Controller -> viewResolver -> view
// viewResolver가 members Page 호출
@GetMapping("/v1/members")
public String getMembers(Model model) {
List<Member> members = memberRepository.findAll();
model.addAttribute("members", members);
return "members";
}
@ResponseBody
viewResolver를 호출하지 않고, HTTP 메시지 바디에 응답 결과를 반영합니다.
Dispatcher Servlet -> Rest Controller -> response
주 용도는 JSON/XML 형태로 객체 데이터를 반환하는 것이며
Spring 4.0부터는 @RestController (@Controller + @ResponseBody)를 지원하였습니다.
※ HTTP 메시지 바디 : HTML 문서, 이미지, 영상, JSON 등등 byte로 표현할 수 있는 모든 데이터 전송 가능
/*
StringHttpMessageConverter 호출
members 문자열 리턴
*/
@GetMapping("/v2/members")
@ResponseBody
public String getMembersV2(Model model) {
List<Member> members = memberRepository.findAll();
model.addAttribute("members", members);
return "members";
}
/*
MappingJackson2HttpMessageConverter 호출
리턴타입이 객체의 경우 Json 변환 후 리턴
*/
@GetMapping("/v3/member/{id}")
@ResponseBody
public MemberDto getMemberV3(@PathVariable("id") String id) {
return new MemberDto(id, "Hello " + id);
}
@Data
@AllArgsConstructor
Public class MemberDto {
private String memberId;
private String name;
}
읽어주셔서 감사합니다.
레퍼런스
반응형
최근댓글