ResponseEntity와 @ResponseBody 의 차이점은 무엇입니까?
컨트롤러에 메시지를 반환하는 간단한 핸들러가 있습니다.
@RequestMapping(value = "/message")
@ResponseBody
public Message get() {
return new Message(penguinCounter.incrementAndGet() + " penguin!");
}
동시에 나는 이런 것을 사용할 수 있습니다.
@RequestMapping(value = "/message")
ResponseEntity<Message> get() {
Message message = new Message(penguinCounter.incrementAndGet() + " penguin!");
return new ResponseEntity<Message>(message, HttpStatus.OK);
}
이 두 접근법의 차이는 무엇입니까?HttpStatus는 고려하지 맙시다 :)
ResponseEntity는 임의 HTTP 응답 헤더를 정의할 때 추가된 유연성을 제공합니다.여기에서 4번째 생성자를 참조하십시오.
http://docs.spring.io/spring/docs/3.0.x/api/org/springframework/http/ResponseEntity.html
ResponseEntity(T body, MultiValueMap<String,String> headers, HttpStatus statusCode)
가능한 HTTP 응답 헤더 목록은 다음에서 사용할 수 있습니다.
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Responses
일반적으로 사용되는 것은 상태, 내용 유형 및 캐시 제어입니다.
필요 없는 경우 @ResponseBody를 사용하는 것이 조금 더 간결합니다.
HttpEntity는 HTTP 요청을 나타내거나 응답이 헤더와 본문으로 구성됩니다.
// Only talks about body & headers, but doesn't talk about status code
public HttpEntity(T body, MultiValueMap<String,String> headers)
ResponseEntity는 HttpEntity를 확장하지만 Http 상태 코드도 추가합니다.
// i.e ResponseEntity = HttpEntity + StatusCode
public ResponseEntity(T body, MultiValueMap<String,String> headers, HttpStatus statusCode)
따라서 HTTP 응답을 완전히 구성하는 데 사용됩니다.
Ex의 경우:
@ControllerAdvice
public class JavaWebExeptionHandler {
@Autowired
ExceptionErrorCodeMap exceptionErrorCodeMap;
@ExceptionHandler(RuntimeException.class)
public final ResponseEntity<ExceptionResponseBody> handleAllExceptions(Exception ex) {
Integer expCode = exceptionErrorCodeMap.getExpCode(ex.getClass());
// We have not added headers to response here, If you want you can add by using respective constructor
return new ResponseEntity<ExceptionResponseBody>(new ExceptionResponseBody(expCode, ex.getMessage()),
HttpStatus.valueOf(expCode));
}
}
@ResponseBody는 메서드가 사용된 메서드의 반환 값이 응답 본문에 바인딩되어 있음을 나타냅니다(메소드의 반환 값이 Http 응답 본문으로 처리됨을 의미합니다).
ResponseEntity<>는 유형 매개 변수가 있는 일반 클래스이므로 응답 본문에 직렬화할 개체 유형을 지정할 수 있습니다.
@ResponseBody는 주석으로 메서드의 반환 값이 HTTP 응답 본문에 직렬화됨을 나타냅니다.
ResponseEntity<>를 사용하여 헤더를 설정할 수 있습니다.
@ResponseEntity는 헤더, 본문 및 상태 코드를 포함하는 응답을 나타냅니다.@ResponseBody는 응답 본문만 반환합니다.
언급URL : https://stackoverflow.com/questions/22725143/what-is-the-difference-between-responseentityt-and-responsebody
'source' 카테고리의 다른 글
봄의 jdbc 템플릿인 이유.batchUpdate() 너무 느리다고요? (0) | 2023.10.26 |
---|---|
TLS가 없는 TLS 지원 데몬에 연결하려고 합니까? (0) | 2023.10.26 |
배열에서 요소의 모든 발생에 대한 인덱스를 찾는 방법은? (0) | 2023.10.26 |
쿼리를 밀리초 안에 실행하기 위해 인덱스를 향상시키는 방법은 무엇입니까? (0) | 2023.10.26 |
VBA에서 HTML 컨텐츠 구문 분석 (0) | 2023.10.26 |