SpringMVC - 11. HTTP 응답 메세지
HTTP 응답 메세지
01. 정적 리소스
- 파일을 그대로 전달하는 방법
- SpringBoot는 Classpath에 있는 아래 디렉토리들에 있는 정적 리소스 제공
- Classpath의 시작 경로 : src/main/resources
- ‘/static’, ‘/public’, ‘/resources’, ‘/META-INF/resources’
02. 뷰 템플릿 사용
-
웹 브라우저에 동적인 HTML을 제공할 때 (SSR : Server Side Rendering)
-
SpringBoot 기본 뷰 템플릿 경로를 제공
- src/main/resources/templates
-
ModelAndView를 반환하는 경우
-
@RequestMapping("/response-view-v1") public ModelAndView responseViewV1() { ModelAndView mav = new ModelAndView("response/hello") .addObject("data", "hello!"); return mav; }
-
String을 반환하는 경우 - viewResolver가 실행되어 뷰를 찾고 렌더링
-
@RequestMapping("/response-view-v2") public String responseViewV2(Model model) { model.addAttribute("data", "hello!"); // 반환값이 뷰의 논리적 이름 return "response/hello"; }
03. HTTP 메세지 사용
-
HTTP API를 제공하는 경우 데이터를 전달해야 하므로 HTTP message Body에 데이터를 실어 보냄
-
REST API = HTTP API
-
JSON을 주로 사용
-
@RestController == Controller + ResponseBody
-
@ResponseStatus(HttpStatus.OK) // 상태 코드 전달 가능 @ResponseBody @GetMapping("/response-body-json-v2") public HelloData responseBodyJsonV2() { HelloData helloData = new HelloData(); helloData.setUsername("userA"); helloData.setAge(20); return helloData; }
-
만약 상태 코드를 동적으로 변경해야 한다면 ResponseEntity를 사용해야 함
-
@GetMapping("/response-body-json-v1") public ResponseEntity<HelloData> responseBodyJsonV1() { HelloData helloData = new HelloData(); helloData.setUsername("userA"); helloData.setAge(20); return new ResponseEntity<>(helloData, HttpStatus.OK); }
댓글남기기