코드 그라데이션

HTTP 응답 - HTTP API, 메시지 바디에 직접 입력 본문

Spring/MVC 1

HTTP 응답 - HTTP API, 메시지 바디에 직접 입력

완벽한 장면 2023. 10. 10. 16:39

HTTP 응답 - HTTP API, 메시지 바디에 직접 입력

HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다.

 

 

ResponseBodyController

@Slf4j
@Controller
public class ResponseBodyController {

    // "/response-body-string-v1" 경로로 GET 요청이 들어올 때, 
    // "ok" 문자열을 직접 HTTP 응답 바디에 쓰는 메서드.
    @GetMapping("/response-body-string-v1")
    public void responseBodyV1(HttpServletResponse response) throws IOException {
        response.getWriter().write("ok");
    }

    /**
     * HttpEntity, ResponseEntity(Http Status 추가)
     * @return
     */
    // "/response-body-string-v2" 경로로 GET 요청이 들어올 때, 
    // ResponseEntity를 사용하여 "ok" 문자열을 반환.
    // ResponseEntity는 HTTP 상태 코드(HttpStatus)를 함께 반환할 수 있는 방법.
    @GetMapping("/response-body-string-v2")
    public ResponseEntity<String> responseBodyV2() {
        return new ResponseEntity<>("ok", HttpStatus.OK);
    }

    // "/response-body-string-v3" 경로로 GET 요청이 들어올 때, 
    // @ResponseBody를 사용하여 "ok" 문자열을 반환.
    // @ResponseBody 어노테이션은 메서드가 직접 HTTP 응답 바디에 데이터를 쓸 수 있도록 해줌.
    @ResponseBody
    @GetMapping("/response-body-string-v3")
    public String responseBodyV3() {
        return "ok";
    }

    // "/response-body-json-v1" 경로로 GET 요청이 들어올 때, 
    // ResponseEntity를 사용하여 JSON 형식의 HelloData 객체를 반환.
    // ResponseEntity는 HTTP 상태 코드(HttpStatus)를 함께 반환할 수 있으며, 
    // JSON 데이터를 반환할 수 있음.
    @GetMapping("/response-body-json-v1")
    public ResponseEntity<HelloData> responseBodyJsonV1() {
        HelloData helloData = new HelloData();
        helloData.setUsername("userA");
        helloData.setAge(20);
        return new ResponseEntity<>(helloData, HttpStatus.OK);
    }

    // "/response-body-json-v2" 경로로 GET 요청이 들어올 때, 
    // @ResponseStatus와 @ResponseBody를 사용하여 JSON 형식의 HelloData 객체를 반환.
    // @ResponseStatus 어노테이션을 사용하여 HTTP 상태 코드(HttpStatus)를 지정할 수 있음.
    // @ResponseBody 어노테이션은 메서드가 직접 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;
    }
}

 

 

물론 애노테이션이기 때문에 응답 코드를 동적으로 변경할 수는 없다. 

프로그램 조건에 따라서 동적으로 변경하려면 ResponseEntity 를 사용하면 된다.

 

 

@RestController

 

728x90

'Spring > MVC 1' 카테고리의 다른 글

요청 매핑 핸들러 구조  (1) 2023.10.29
HTTP 메시지 컨버터  (1) 2023.10.28
HTTP 응답 - 정적 리소스, 뷰 템플릿  (1) 2023.10.10
HTTP 요청 메시지 - JSON  (0) 2023.10.10
HTTP 요청 메시지 - 단순 텍스트  (0) 2023.10.09
Comments