[Spring] HTTP 응답 - HTTP API, 메시지 바디에 직접 입력
- 📚 Spring/SpringMVC
- 2021. 10. 30. 12:28
목표 : http 응답 관련 공부 ( ResponseEntity, ResponseStatus 등)
package hello.springmvc.basic.response;
import hello.springmvc.basic.HelloData;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Slf4j
@Controller
//@ResponseBody
public class ResponseBodyController {
@GetMapping("/response-body-string-v1")
public void responseBodyV1(HttpServletResponse response) throws IOException {
response.getWriter().write("ok");
}
@GetMapping("/response-body-string-v2")
public ResponseEntity<String> responseBodyV1() throws IOException {
return new ResponseEntity<>("ok", HttpStatus.OK);
}
@GetMapping("/response-body-string-v3")
public String responseBodyV3() {
return "ok";
}
@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);
}
// ResponseEntity와 달리 @ResponseBody를 쓰면 상태코드를 보낼 수 없기 때문에
// @ResponseStatus을 사용해서 보내줄 수 가 있다.
@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와 달리 @ResponseBody를 쓰면 상태코드를 보낼 수 없기 때문에 @ResponseStatus을 사용해서 보내줄 수 가 있다.
- 물론 애노테이션이기 때문에 응답 코드를 동적으로 변경할 수는 없다. 프로그램 조건에 따라 동적으로 변경하려면
ResponseBody
를 사용하면 된다. - '@ResponseBody'를 클래스에 공통으로 붙일 수 있다.
@RestController
@Controller + @ResponseBody
을 합친 것이 @RestController 이다.- @Controller 대신에 @RestController 애노테이션을 사용하면, 해당 컨트롤러에 모두 @ResponseBody가 적용되는 효과가 있다.
- 따라서 뷰 템플릿을 사용하는 것이 아니라, HTTP 메시지 바디에 직접 데이터를 입력한다.
- 이름 그대로 REST API(HTTP API)를 만들 때 사용하는 컨트롤렁 ㅣ다.
'📚 Spring > SpringMVC' 카테고리의 다른 글
@RequestBody 테스트 (0) | 2022.04.24 |
---|---|
HTTP 요청 메시지 - JSON (0) | 2021.10.29 |
HTTP 요청 메시지 - 단순텍스트 (@RequestBody,HttpEntity, RequestEntity) (0) | 2021.10.29 |
[Sprng] 요청파라미터 > @ModelAttribute (0) | 2021.10.29 |
[Spring] 요청 파라미터 > @RequestParam (0) | 2021.10.29 |