MapleStory Cookie With Halo

🍃 Spring/🍃 Spring Boot

[SpringBoot]웹 개발 기초-API @ResponseBody

뉴이 NUEY 2025. 1. 4. 02:18
반응형

 

※ 이전 편 : 2025.01.03 - [🍃 Spring/🍃 Spring Boot] - [SpringBoot]웹 개발 기초-MVC와 템플릿 엔진

 


 

@ResponseBody
: html의 Body란에 그대로 data를 반환한다.

 

템플릿 엔진과 딱 하나 다른 점이 @ResponseBody가 추가되었다는 점이다.

 

html파일을 안 만들었는데도 리턴 값이 들어간 body란이 만들어졌다. 바로 @ResponseBody가 만든 것이다.

 


 

주로 객체를 return해
json데이터를 반환하기 위해 많이 사용된다.

 

  1. Controller단에 메서드를 만들었다.
    • code
      더보기
      package hello.hellospring.Controller;
      
      import org.springframework.stereotype.Controller;
      import org.springframework.ui.Model;
      import org.springframework.web.bind.annotation.GetMapping;
      import org.springframework.web.bind.annotation.RequestParam;
      import org.springframework.web.bind.annotation.ResponseBody;
      
      @Controller
      public class HelloController {
      
          @GetMapping("hello")
          public String hello(Model model) {
              model.addAttribute("data", "hihi");
              return "hello";
          }
      
          @GetMapping("hello-mvc")
          public String helloMvc(@RequestParam("name") String name, Model model) {
              model.addAttribute("name", name);
              return "hello-template";
          }
      
          @GetMapping("hello-string")
          @ResponseBody
          public String helloString(@RequestParam("name") String name) {
              return "hello " + name;
          }
      
          @GetMapping("hello-api")
          @ResponseBody
          public Hello helloApi(@RequestParam("name") String name) {
              Hello hello = new Hello();
              hello.setName(name);
              return hello;
          }
      
          public class Hello {
              private String name;
      
              public String getName() {
                  return name;
              }
      
              public void setName(String name) {
                  this.name = name;
              }
          }
      }
    • Hello라는 내부 클래스를 이용해 데이터를 만들어 반환했다.

  2. 서버실행 결과
    • 화면
    • json 데이터형태로 반환된 것을 확인할 수 있다.

 


 

HttpMessageConverter
: @ReponseBody가 적혀있으면
viewResolver가 아닌 HttpMessageConverter 작동한다.

 

 

HttpMessageConverter
JsonConverter StringConverter

 

  • 리턴 값이 단순 문자이면 StringConverter가 작동하고

  • 객체이면 JsonConverter가 작동해 Json을 반환한다.

 

💡 요즘 view ↔ java에서 데이터를 주고 받을 때는 json을 사용하기에 이렇게 설정되어 있다.
🌟 검색해보면 HttpMessageConverter를 변경해서 사용할 수 있는데, 실무에서는 거의 그대로 사용한다고 한다.
※ 클라이언트의 HTTP Accept 헤더에서 원하는 데이터 타입을 지정할 수 있는데, 컨트롤러의 반환 타입을 조합해서 HttpMessageConverter가 반환타입을 선택한다.

 


※ 참조 : https://www.inflearn.com/roadmaps/373

반응형