-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
페이지네이션 개선 완료 #355
페이지네이션 개선 완료 #355
Conversation
기존 작동하던 API를 모두 호환시키면서 확장한 점이 인상 깊고, 많은 고민의 흔적이 보입니다.
public ApiResponse<PagedResponseDto<MemberResponseDto>> getMembersByConditions(
@RequestParam(name = "id", required = false) String id,
@RequestParam(name = "name", required = false) String name,
@RequestParam(name = "page", defaultValue = "0") int page,
@RequestParam(name = "size", defaultValue = "20") int size,
@RequestParam(name = "sortBy", required = false) Optional<List<String>> sortBy,
@RequestParam(name = "sortDirection", required = false) Optional<List<String>> sortDirection
) throws SortingArgumentException {
List<String> sortByList = sortBy.orElse(List.of("createdAt"));
List<String> sortDirectionList = sortDirection.orElse(List.of("desc"));
Pageable pageable = PageableUtils.createPageable(page, size, sortByList, sortDirectionList, Member.class);
PagedResponseDto<MemberResponseDto> members = memberService.getMembersByConditions(id, name, pageable);
return ApiResponse.success(members);
}
public ApiResponse<PagedResponseDto<MemberResponseDto>> getMembersByConditions(
@RequestParam(name = "id", required = false) String id,
@RequestParam(name = "name", required = false) String name,
@RequestParam(name = "page", defaultValue = "0") int page,
@RequestParam(name = "size", defaultValue = "20") int size,
@RequestParam(name = "sortBy", defaultValue = "createdAt") List<String> sortBy,
@RequestParam(name = "sortDirection", defaultValue = "desc") List<String> sortDirection
) throws SortingArgumentException {
Pageable pageable = PageableUtils.createPageable(page, size, sortBy, sortDirection, Member.class);
PagedResponseDto<MemberResponseDto> members = memberService.getMembersByConditions(id, name, pageable);
return ApiResponse.success(members);
} |
사용자 정의 예외
|
Accuse 도메인의 '신고 내역 조회' API는 accuse_target 테이블에 쿼리를 보내 요청을 처리하기 때문에 아래 코드를 다음과 같이 수정할 필요가 있어보입니다.
Pageable pageable = PageableUtils.createPageable(page, size, sortByList, sortDirectionList, Accuse.class);
Pageable pageable = PageableUtils.createPageable(page, size, sortByList, sortDirectionList, AccuseTarget.class); 추가로, 아래와 같이 요청을 보냈을 때 에러가 발생하고 있습니다. 확인 부탁드립니다. Request: /api/v1/accuses?countOrder=false&page=0&size=20&sortBy=accuse_count&sortDirection=desc |
테이블에서 칼럼을 찾지 못했을 때 |
description에 정렬가능한 칼럼도 적어주면 클라이언트에서 API 요청할 때 훨씬 수월할 것 같네요. |
…xception을 발생시키고 핸들러에 등록 #354
피드백 감사합니다! 전부 적용했습니다! |
적용한 내용 모두 확인했습니다. 피드백 수용해주셔서 감사합니다. |
Summary
페이지네이션에 정렬 기준을 직접 커스텀 할 수 있습니다.
Tasks
ETC
Screenshot