[스프링 입문] 정리노트 - 2

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의

시작

ReponseBody 데코레이터 응용


전 챕터까지는 API를 요청하면 페이지를 렌더링하여 사용자에게 제공했습니다. 이번에는 http통신의 body데이터만을 응답으로 내보내는 API를 만들어보도록 하겠습니다.

다음과 같이 API를 추가합니다.

java
  @GetMapping("hello-string")
  @ResponseBody // http 통신에서 body의 응답 데이터를 직접 넘겨줄때 템플릿 엔진과 차이점은 body만을 제공하는것이다.
  public String helloString(@RequestParam("name") String name) {
      return "hello " + name;
  }

ReponseBody 는 http 통신에서 body의 응답 데이터를 직접 넘겨줄때 body데이터를 응답으로 제공합니다.

Json 데이터 넘겨주기


Hello라는 클래스를 생성하고 새로운 api를 생성하고 해당 api에서 인스턴스화하여 객체에 이름을 추가해 리턴해봅시다.

java
  @GetMapping("hello-api")
  @ResponseBody
  public Hello helloApi(@RequestParam("name") String name) {
      // command + shift + enter 시 세미콜론등 귀찮은 작업을 자동으로 수행해준다.
      Hello hello = new Hello();

      hello.setName(name);
      return hello;
  }

  static class Hello {
      private String name;

      // command + N 를 이용해 Generate 옵션으로
      // 쉽게 멤버변수의 getter setter를 추가할 수 있습니다.
      public String getName() {
          return name;
      }

      public void setName(String name) {
          this.name = name;
      }
  }

다음과 같이 JSON 형태로 사용자에게 제공됩니다.

Spring-Web-MVC-capture7

ReponseBody데코레이터를 적용한 api에 객체를 return하면, HttpMessageConverter에서 이를 감지합니다. 이때 객체를 응답한다면 JsonConverterJson포맷으로 변경하여 응답으로 내보냅니다.

이외에 객체를 Json데이터로 포맷해주는 유명한 라이브러리는 Jackson2이 있습니다. Spring이 이 라이브러리를 이용하는것입니다.