@GetMapping("/users/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
User user = userService.findById(id);
return new ResponseEntity<>(user, HttpStatus.OK);
}
@DeleteMapping("/users/{id}")
public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
userService.deleteById(id);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
- HTTP 상태 코드로는 204(NO_CONTENT)를 반환하고 있다.
@GetMapping("/check-status")
public ResponseEntity<HttpStatus> checkStatus() {
return new ResponseEntity<>(HttpStatus.OK);
}
상태 검사 요청에 대한 응답을 구성하고 있다. 본문에 HttpStatus.OK를 반환하고 있다. 이렇게 ResponseEntity를 사용하면 클라이언트에게 HTTP 응답을 보다 세밀하게 구성하고 제어할 수 있다.
일반적으로는 페이지네이션된 데이터를 처리할 때 사용되는 데이터 전달 객체(Data Transfer Object)라고 생각할 수 있다.
public class PageDto<T> {
private List<T> content;
private int pageNumber;
private int pageSize;
private long totalElements;
public PageDto(List<T> content, int pageNumber, int pageSize, long totalElements) {
this.content = content;
this.pageNumber = pageNumber;
this.pageSize = pageSize;
this.totalElements = totalElements;
}
public List<T> getContent() {
return content;
}
public void setContent(List<T> content) {
this.content = content;
}
public int getPageNumber() {
return pageNumber;
}
public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public long getTotalElements() {
return totalElements;
}
public void setTotalElements(long totalElements) {
this.totalElements = totalElements;
}
}```
데이터, 현재 페이지 번호, 페이지당 아이템 수, 전체 데이터 수 등의 정보를 담고 있다.
이 pageDto를 사용하는 예시
@GetMapping("/users")
public ResponseEntity<PageDto<User>> getUsers(
@RequestParam(value = "page", defaultValue = "0") int page,
@RequestParam(value = "size", defaultValue = "10") int size) {
Page<User> userPage = userService.findAll(PageRequest.of(page, size));
PageDto<User> userPageDto = new PageDto<>(
userPage.getContent(),
userPage.getNumber(),
userPage.getSize(),
userPage.getTotalElements());
return new ResponseEntity<>(userPageDto, HttpStatus.OK);
}