본문 바로가기
Framework & Library/Spring Boot

[Spring Boot] : HTTP, API 메시지 바디에 직접 입력해 HTTP 응답하기

by 오주현 2022. 1. 28.
반응형

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편 - 백엔드 웹 개발 핵심 기술을 참고하여 공부하였습니다.

반응형

댓글