반응형
HTTP API를 제공하는 경우 데이터를 전달해야 하므로 JSON 형식으로 데이터를 전달한다.
@Slf4j
@RestController
먼저 컨트롤러는 @RestController를 사용했다.
@RestController를 사용하면 해당 컨트롤러에 모두 @ResponseBody가 적용이 되며 이름 그대로 Rest API(HTTP API)를 만들 때 사용되는 컨트롤러이다.
즉, @RestController를 사용하면 안에 @ResponseBody가 적용되어 있어서 따로 선언을 하지 않아도 된다.
@GetMapping("/response-body-string-v1")
public void responseBodyV1(HttpServletResponse response) throws IOException {
response.getWriter().write("ok");
}
강의 특성상 처음에 작성한 코드를 점점 완성시켜 나간다. 처음에는 HttpServletResponse 객체를 통해 HTTP 메시지 바디에 직접 OK라는 응답 메시지를 전달했다.
@ResponseBody
@GetMapping("/response-body-string-v3")
public String responseBodyV3() {
return "ok";
}
3단계까지 수정을 거치면 이런 코드가 되는데 @ResponseBody를 사용해서 view를 사용하지 않고 HTTP 메시지 컨버터를 통해 HTTP 메시지를 직접 입력한다.
@ResponseStatus(HttpStatus.OK)
// @ResponseBody
@GetMapping("/response-body-json-v2")
public HelloData responseBodyJsonV2() {
HelloData helloData = new HelloData();
helloData.setUsername("userA");
helloData.setAge(20);
return helloData;
}
String 타입이 아닌 JSON 타입으로 받는 마지막 코드는 위와 같다.
ResponseEntity는 HTTP 응답 코드를 설정할 수 있는데 ResponseBody를 사용하면 설정하기 까다롭다. 때문에 @ResponseStatus(HttpStatus.OK) 어노테이션을 통해 응답 코드를 따로 설정해 주었다.
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술을 참고하여 공부하였습니다.
반응형
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : 요청 매핑 핸들러 어뎁터 구조 (0) | 2022.01.28 |
---|---|
[Spring Boot] : HTTP 메시지 컨버터 (0) | 2022.01.28 |
[Spring Boot] : 정적 리소스 및 뷰 템플릿 (0) | 2022.01.26 |
[Spring Boot] : HTTP 요청 메시지 JSON (0) | 2022.01.26 |
[Spring Boot] : HTTP 요청 메시지 - 단순 텍스트 관련 알아보기 (0) | 2022.01.26 |
댓글