코드 그라데이션
HTTP 응답 - HTTP API, 메시지 바디에 직접 입력 본문
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