[2-3] API

otyvs1109·2022년 5월 22일
0

Spring 입문

목록 보기
6/16
post-thumbnail

@ResponseBody : 문자 반환

@Controller
  public class HelloController {

			...

      @GetMapping("hello-string")
      @ResponseBody
      public String helloString(@RequestParam("name") String name) {
          return "hello " + name;
      }
}
  • @ResponseBody 란? viewResolver 를 사용하지 않고 http 통신 프로토콜의 BODY에 문자(return 이하)를 직접 넣어준다.
  • 크게... 쓸모는 없음.

@ResponseBody : 객체 반환

@Controller
  public class HelloController {

      @GetMapping("hello-api")
      @ResponseBody
      public Hello helloApi(@RequestParam("name") String name) {
          Hello hello = new Hello();
          hello.setName(name);
          return hello;
      }

      static class Hello {

          private String name;

          public String getName() {
              return name;
					}
          public void setName(String name) {
              this.name = name;
					}
			}
	}
  • @ResponseBody 를 사용하고 객체를 return 하면 객체가 JSON 으로 변환됨.
  • 요즘에는 주로 객체를 반환하는 방식을 사용한다.

@ResponseBody 사용 원리

  • 웹 브라우저에서 localhost:8080/hello-api 를 톰캣에 던지면 톰캣이 스프링의 컨트롤러에 넘긴다.
  • 컨트롤러에서 @ResponseBody 어노테이션이 붙은 것을 확인하고 viewResolver 대신 HttpMessageConverter 를 동작하게 한다.
    • 기본 문자 처리 : StringHttpMessageConverter
    • 기본 객체처리 : MappingJackson2HttpMessageConverter
  • 웹 브라우저 또는 다른 서버에 JSON / String 을 반환해준다.
profile
ohohoh

0개의 댓글