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";
    }
    

  • 인프런 - 김영한님의 Spring MVC 강의를 정리한 내용입니다.


    김영한님 인프런 강의

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);
    }
    



인프런 - 김영한님의 Spring MVC 강의를 정리한 내용입니다.


김영한님 인프런 강의

댓글남기기