1. ResponseEntity란?
- Spring Framework에서 제공하는 클래스 중 HttpEntity라는 클래스가 존재
- HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpStatus, HttpHeader와 HttpBody를 포함하는 클래스
- ResponseEntity 는 status field를 가지기 때문에 상태코드는 필수적으로 리턴해야함
@RestController
public class UserController {
private UserDaoService userDaoService;
public UserController(UserDaoService userDaoService) {
this.userDaoService = userDaoService;
}
@GetMapping(value = "/user/{id}")
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);
}
}
@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;
}
}
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. ResponseEntity 응용
- List와 Map 등 다양한 객체들을 담아서 전달이 가능
- Body에 응답을 위한 별도의 클래스를 제작하여 사용하면 정해진 규약에 따라 데이터를 전달할 수 있는 장점
개선버전
출처 : https://devlog-wjdrbs96.tistory.com/182, https://hyeonic.tistory.com/197
'TIL' 카테고리의 다른 글
[TIL] 데이터베이스 식별/비식별 관계 (0) | 2024.02.07 |
---|---|
[TIL] 20240205 Jwt accessToken, refreshToken (0) | 2024.02.05 |
[TIL] 20240131 Spring security JWT 필터 (0) | 2024.01.31 |
[TIL] 20240130 JPA 지연로딩, 영속성 전이 (0) | 2024.01.30 |
[TIL] 20240129 JPA 연관 관계 (1) | 2024.01.29 |