안녕하세요 선생님 게시글 목록 API-페이지 번호 구현 강의에서 질문 있습니다.
안녕하세요 선생님 좋은 강의 감사합니다.
저희 articleController에서 readAll 부분을 보면
@GetMapping("/v1/articles")
public ArticlePageResponse findAll(
@RequestParam("boardId") Long boardId,
@RequestParam("page") Long page,
@RequestParam("pageSize") Long pageSize
) {
return articleService.readAll(boardId, page, pageSize);
}이런식으로 pageSize를 쿼리 파라미터로 넘겨주도록 설계가 되어 있는데, pageSize라는 파라미터는 값을 받아서 처리하는 것이 아니라, 서버에서 값을 정하고 항상 똑같은 pageSize를 써야하는 것 아닌가요 ??
왜 pageSize를 인자로 받는지 이해가 잘가지 않습니다.
답변 2
1
태우님, 안녕하세요!
서버에서 값을 정하고 항상 똑같은 pageSize를 써야하는 것 아닌가요 ??
그렇게 할 수도 있겠지만, 보통은 그렇게 하지 않습니다.
클라이언트 기기의 화면 크기에 따라서 필요한 pageSize가 다를 수 있고,
또는 사용자에게 페이지 개수 제어하는 기능을 제공하는 경우도 있기 때문입니다.
만약 pageSize가 고정값이라면, 클라이언트 요구사항에 따라서 항상 새로운 API를 만들어주거나 수정이 필요할 수 있습니다.
그럴거라면 차라리 pageSize를 인자로 받는 경우가 훨씬 편합니다.
pageSize를 제어할 수 있도록 API만 제공해주면,
클라이언트는 구현 세부 사항을 API에 알리지 않고도 필요한 개수만 불러와서 유연하게 개발할 수 있습니다.
실서비스에서는 pageSize에 대한 최댓값 제약은 당연히 필요하고,
특정한 값(20개/30개 등)만 인자를 받도록 제약을 만들 수도 있습니다.
물론, 이게 정답이라는 것은 아니고 pageSize의 변동이 없어도 된다면, 말씀하신대로 처리해도 무방합니다.
어떠한 방식이든 구현하기 나름이고, 요구사항에 맞춰주면 되는 부분이네요!
0
안녕하세요, 인프런 AI 인턴입니다. 김태우님.
우선 강의를 열심히 들어주셔서 감사합니다. 질문하신 사항에 대해 설명드리겠습니다.
PageSize를 쿼리 파라미터로 받는 이유
유연성 제공:
pageSize를 쿼리 파라미터로 받으면 클라이언트가 요청에 따라 한번에 가져올 데이터의 수를 조절할 수 있다는 장점이 있습니다. 예를 들어, 관리자는 더 많은 데이터를 볼 수 있지만, 일반 사용자는 기본 설정을 유지할 수 있습니다.
사용자 경험 개선:
- 사용자가 페이지 스크롤을 통해 더 많은 데이터를 빠르게 로드하고 싶을 때 유리합니다. 특정 결과 집합을 보다 쉽게 탐색할 수 있게 해 주며, 과도한 불필요한 데이터를 로딩하여 대역폭 사용을 늘리지 않도록 할 수 있습니다.
- 사용자가 페이지 스크롤을 통해 더 많은 데이터를 빠르게 로드하고 싶을 때 유리합니다. 특정 결과 집합을 보다 쉽게 탐색할 수 있게 해 주며, 과도한 불필요한 데이터를 로딩하여 대역폭 사용을 늘리지 않도록 할 수 있습니다.
구현의 편의성:
pageSize를 서버에서 항상 동일하게 고정하기보다 가변적으로 설정할 수 있도록 구성하면, 다양한 요구사항이나 변경된 요구조건에 즉각적으로 적응할 수 있습니다.
하지만, 특정한 이유로 페이지 크기를 고정하고 싶을 경우, 서버 내부적으로 pageSize 값을 고정된 값으로 설정하거나 클라이언트 측에서 제안된값을 보호하고 관리하는 방법도 있습니다.
이는 같은 주제로 여러 상황을 다룬 유사한 질문이 커뮤니티에 올라온 바 있는데, 아래 링크를 참고해 보세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 해결책을 제시하고 있습니다. 베타 기능인지라 답변이 부족할 수 있는 점 양해 부탁드립니다. 🙏 추가로 궁금한 사항이 있으시면 자유롭게 질문해 주세요. 몇 시간 이내로 지식공유자님의 답변을 받으실 수 있을 것입니다.
@Version 어노테이션이 붙은 필드는 낙관적 락이든 비관적 락이든 업데이트가 됩니다.
0
31
1
consumer에서 에러가 발생할 경우 데이터 유실 문의
0
47
2
게시글 테스트 데이터 삽입
0
50
2
정렬, 필터, 검색 등의 조건이 붙을 경우 최적화할 수 있는 방법이 무엇이 있을까요?
0
103
2
좋아요 기능 정합성 보장 방법
0
96
2
좋아요 동시성처리 최적의 선택?
1
135
2
프론트엔드 msa 환경 api 주소 통합? 과 서버끼리 통신 방식에대해
0
91
2
안녕하세요 무한스크롤 강의듣다가 질문이 있습니다.
0
59
1
조회수 조회 로직 질문
1
67
2
비로그인 유저도 어뷰징 방지 정책
1
72
2
CommentServiceTest의 테스트 로직 질문
0
54
2
무한 스크롤 방식에서 페이지 번호 방식 쿼리의 문제점 의문
1
74
2
path 쿼리 관련 질문드립니다!
0
59
2
antigravity 에디터를 쓰신다면 종료해주세요
1
123
0
프로젝트 구조
0
88
2
article_like_count api test
0
77
2
이벤트 페이로드 객체의 생성 방식이 팩토리 메서드 패턴이 아닌 빌더 패턴인 이유가 궁금합니다!.
0
104
2
[33. 좋아요 수 구현] 에서 테스트 하는 화면 동시성 문제
0
91
2
findByPath에서 articleId로도 검색을 해야 할 것 같아요.
0
91
3
jpa ddl-auto none을 하는 이유와 join 방법
0
97
2
팩터리 메소드와 response 객체 사용 이유가 궁금합니다!
0
90
2
커서 기반 페이지네이션 과 무한 스크롤링
0
109
2
게시글 생성 로직에서 오류 발생시 redis 게시글 수 되돌리기
0
97
2
멀티 모듈이 아닌 MSA 환경에서 common
0
156
2





