REST와 @ResponseBody
어노테이션
스프링MVC에서 컨트롤러의 메서드는 "논리적인 뷰"를 반환하는 것으로 상정한다.
하지만 REST 서비스는 리소스를 반환해야하기 때문에 상성이 맞지 않다.
그럴 땐 컨트롤러 메서드에@ResponseBody
붙여준다.
@ResponseBody
를 붙인 메서드의 반환은, 뷰가 되는 것이 아니며
즉시 HTTP 응답 스트림으로 사용된다.
반환된 값은 디스패쳐 서블릿에 등록된 메시지 컨버터 빈을 거쳐
JSON 및 XML로 변환되고 HTTP 응답 스트림에 쓰인다.
@Controller
@ResquestMapping(value="/singer")
public class SingerController {
final Logger logger = LoggerFactory.getLogger(SingerController.class);
@Autowired private SingerService singerService;
@ResponseStatus(HttpStatus.OK)
@RequestMapping(value = "/listdata", method = RequestMethod.GET)
@ResponseBody
public Singers listData() {
return new Singers(singerService.findAll());
}
}
스프링 4.0부터는 @RestController
@RestController
클래스 수준 어노테이션을 사용하면,@RequestMapping
이 붙은 메서드에 자동으로 @ResponseBody
가 적용된다.@GetMapping
, @PostMapping
등은 @RequestMapping
을 래핑한 버전이므로 역시 적용된다.
'웹 개발 > 스프링 프레임워크' 카테고리의 다른 글
[스프링 Web] RestTemplate이 쏘는 패킷을 보고싶다 - Fiddler4로 JVM 패킷 디버깅하기 (2) | 2021.12.14 |
---|---|
[스프링 Web] 웹 API 호출 이야기 - RestTemplate을 사용하는 서비스 구조와 구현 (0) | 2021.12.14 |
[스프링] 다양한 작업 실행 전략 이야기 - 스케줄링 및 비동기 실행 (0) | 2021.12.14 |
[스프링 Security] CSRF 토큰 이야기 - csrf() 켰더니 로그아웃이 안 되네? (0) | 2021.12.14 |
[스프링 Security] CSRF 토큰 이야기 - 그래서 개발자는 뭘 하면 되죠 (4) | 2021.12.14 |