[스프링부트] [JAVA] [입문] 2.3 API : @ResponseBody

업데이트:




Spring으로 웹을 개발한다는 건 크게 3가지 정도로 나눌 수 있다.

첫번째로 정적 컨텐츠
두번째로 MVC와 템플릿엔진
세번째로 API

오늘은 API에 대해 간단하게 알아보고 공부해보도록 하겠다!





@ResponseBody

우리가 일반적으로 컨트롤러를 만들어 사용할 때, viewResolver에 의해 return 값으로 반환하는 문자열은 view 페이지를 의미한다.

@Controller
public class HelloController {
    @GetMapping("hello")
    public String hello(Model model) {
        model.addAttribute("data", "hello!!");
        return "hello";
    }
}

위 코드에서는 hello 라는 페이지를 return 하는것이다.







@ResponseBody 문자 반환

그런데 만약 View페이지가 아닌 문자열 그대로를 return하고 싶은경우에는 @ResponseBody 를 사용하면 된다.

@GetMapping("hello-string")
    @ResponseBody
    public String helloString(@RequestParam("name") String name){
        return "hello" + name;
    }

@ResponseBody 어노테이션을 달아준 코드이다.




name=Spring HAHA 라고 지정하고 실행을 하면 return 값인 helloSpring HAHA 가 그대로 출력되는것을 볼 수 있다.




  • @ResponseBody 를 사용하면 viewResolver 를 사용하지 않는다.
  • 대신 HTTP의 BODY에 문자내용을 직접 반환 한다.







@ResponseBody 객체 반환

@GetMapping("hello-api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name") String name){
        // json 방식으로 key-value값을 전달
        // 최근에는 거의 json방식을 많이 사용
        Hello hello = new Hello();
        hello.setName(name);
        return hello;
    }

	// 객체생성
    static class Hello{
        private String name;

        // getter setter 단축키 : Alt+Insert
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }




결과 : [localhost:8080/hello-api?name=Spring HAHA]

@ResponseBody 태그를 사용해서 객체를 담아준뒤 반환해준 결과이다. 객체를 반환하면 json 방식으로 값을 반환해주는데 <key,value> 구조라고 생각하면 된다. 최근에는 거의 json 방식을 사용해서 객체를 반환한다!!







ResponseBody 동작 환경

  • 컨트롤러에서 viewResolver 대신에 HttpMessageConverter 가 동작한다.
  • 기본 문자 처리 : StringHttpMessageConverter
  • 기본 객체 처리 : MappingJackson2HttpMessageConverter
  • byte 처리 등등 기타 여러 HttpMessageConverter 가 기본으로 등록되어 있다.
  • 일단 이런게 있다 정도만 알아두고 넘어가자!







여기까지 [스프링부트] [JAVA] [입문] 4. API 포스팅을 마치겠습니다.

댓글남기기