1. ResponseEntity , RequestEntity 란?
Spring Framework에서 제공하는 클래스중 HttpEntity라는 클래스를 상속받는 클래스.
public class RequestEntity<T> extends HttpEntity<T>
public class ResponseEntity<T> extends HttpEntity<T>
2. HttpEntity 란?
HttpHeader , HttpBody를 포함하는 클래스.
public class HttpEntity<T> {
private final HttpHeaders headers;
@Nullable
private final T body;
}
3. ResponseEntity 기능은 ?
사용자의 HttpRequest에 대한 응답 데이터(HttpStatus , HttpHeaders , HttpBody)를 포함한다.
예제1)
// 상태코드 반환하기
public ResponseEntity getAllUsers() {
return new ResponseEntity(HttpStatus.OK); // 상태코드 200으로 나옴
}
예제2)
// 1. enum클래스 활용해서 상태코드,메세지,데이터를 담을 필드를 추가해주고
public enum StatusEnum {
OK(200, "OK"),
BAD_REQUEST(400, "BAD_REQUEST"),
NOT_FOUND(404, "NOT_FOUND"),
INTERNAL_SERER_ERROR(500, "INTERNAL_SERVER_ERROR");
int statusCode;
String code;
StatusEnum(int statusCode, String code) {
this.statusCode = statusCode;
this.code = code;
}
}
// 2. message클래스를 만들어 상태코드,메세지,데이터를 담고
@Data
public class Message {
private StatusEnum status;
private String message;
private Object data;
public Message() {
this.status = StatusEnum.BAD_REQUEST;
this.data = null;
this.message = null;
}
}
// 3. controller클래스에 적용시켜준다.
@RestController
public class UserController {
...
@GetMapping
public ResponseEntity<Message> findById(@PathVariable int id) {
User user = userDaoService.findOne(id);
Message message = new Message();
HttpHeaders headers= new HttpHeaders();
headers.setContentType(new MediaType("application", "json", Charset.forName("UTF-8")));
message.setStatus(StatusEnum.OK);
message.setMessage("성공 코드");
message.setData(user);
return new ResponseEntity<>(message, headers, HttpStatus.OK);
}
}