본문 바로가기
Spring 입문

스프링MVC 입문07

by danny-j 2022. 11. 9.

API (@ResponseBody 사용 원리)

  • 클라이언트 요청이 내장 톰캣 서버에서 요청에 맞는 컨트롤러에 맵핑된 메서드로 보냄
  • @ReponseBody가 붙어있으므로 HTTP의 BODY에 문자 내용을 직접 반환
  • 반환할 때 viewResolver대신 HttpMessageConverter가 동작
    • 기본 문자 처리는 StringHttpMessageConverter 가 동작
    • 기본 객체 처리는 MappingJackson2HttpMessageConverter 가 동작(객체를 JSON으로 바꿔주는 유명 라이브러리는 Jackson과 구글에서 만든 Gson이 있는데 Spring에서는 기본으로 Jackson으로 제공)
  • byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음(기본적으로 셋팅이 되어 있어서 손댈일 없음)
  • 클라이언트의 HTTP Accept 헤더(요청시 받고싶은 포맷이 있음)와 서버의 컨트롤러 반환 타입 정보 둘을 조합해서 HttpMessageConverter가 선택됨

 

Controller

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

static class Hello {
    private String name;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
  • control(command) + shift + enter - 자동으로 괄호 닫고 세미콜론
  • command+n / alt+insert - getter/setter/생성자 자동완성 (Generate)
  • @ResponseBody
    • viewResolver를 거치지 않고 Body에 데이터를 담아서 보냄
    • hello-string을 요청하면 문자열로 반환 됨
    • hello-api을 요청하면 객체를 생성하고 Json타입으로 반환됨

 

실행 결과

  • hello-string

 

  • hello-api

 

 

 

 

이미지 출처 - https://www.inflearn.com/course/스프링-입문-스프링부트

 

'Spring 입문' 카테고리의 다른 글

스프링MVC 입문09  (0) 2022.11.10
스프링MVC 입문08  (0) 2022.11.09
스프링MVC 입문06  (0) 2022.11.09
스프링MVC 입문05  (0) 2022.11.09
스프링MVC 입문04  (0) 2022.11.09

댓글