스프링(서버)에서 응답 데이터를 만드는 방법은 크게 3가지
정적 리소스
/static, /public, /resources, /META-INF/resources
src/main/resources/static
뷰 템플릿 (Thymeleaf)
뷰 템플릿을 거쳐서 HTML 생성 -> 뷰가 응답을 만들어서 전달
일반적으로 HTML을 동적으로 생성하는 용도이지만, 다른 것들도 가능
뷰 템플릿 경로 <- 스프링 부트는 기본 뷰 템플릿을 경로를 제공
src/main/resources/templates
String을 반환하는 경우 - View or HTTP 메시지
@ResponseBody가 없으면 return 되는 경로를 뷰 리졸버가 실행되어서 뷰를 찾고 렌더링 함
@ResponseBody가 있으면 HTTP 메시지 바디에 return 되는 문자가 입력 됨
@RequestMapping("/response-view-v2")
public String responseViewV2(Model model){
model.addAttribute("data", "hello!");
return "response/hello";
}
방법 1~3 - String
방법 1.
@GetMapping("/response-body-string-v1")
public void responseBodyV1(HttpServletResponse response) throws IOException {
response.getWriter().write("ok");
}
방법 2.
@GetMapping("/response-body-string-v2")
public ResponseEntity<String> responseBodyV2() throws IOException {
return new ResponseEntity<>("ok", HttpStatus.OK);
}
방법 3.
@ResponseBody
@GetMapping("/response-body-string-v3")
public String responseBodyV3() throws IOException {
return "ok";
}
방법 4, 5 - Json
방법 4.
@GetMapping("/response-body-json-v1")
public ResponseEntity<HelloData> responseBodyJsonV1(){
HelloData helloData = new HelloData();
helloData.setAge(10);
helloData.setUsername("userA");
return new ResponseEntity<>(helloData, HttpStatus.OK);
}
방법 5.
@ResponseStatus(HttpStatus.OK)
@ResponseBody
@GetMapping("/response-body-json-v2")
public HelloData responseBodyJsonV2(){
HelloData helloData = new HelloData();
helloData.setAge(10);
helloData.setUsername("userA");
return helloData;
}