이번 포스트는
- 스프링부트 API: 상품 리스트 API 작업
신규작업소스(스프링부트API): https://github.com/kimilguk/shop-api
신규작업소스(안드로이드앱): https://github.com/kimilguk/shop-app
### 상품 리스트 API 작업
- 안드로이드앱의 스크롤 이벤트를 염두에 두고 스프링부트 페이징 구현
- ProductListRequestDto.kt 추가: 서비스에서 상품 목록출력 시 전송내용이 임시 저장될 데이터 ProductListRequestDto 클래스
- ProductRepository.kt 수정: 상품정보를 읽어오는 인터페이스 정의(카테고리별, 스크롤시 상품 id 기준 전후)
- ProductService.kt 추가: 상품목록을 읽어오는 로직 서비스 클래스
- ProductApiController.kt 수정: API Get 매핑 및 상품목록 서비스를 호출 추가
- 아래는 안드로이드 앱에서 위쪽으로 스크롤 될 때(prev 파라미터)
// 기본 PK 검색을 제외한 필드의 검색은 개발자가 추가한다. 페이징 처리는 Pageable 클래스를 상속한다.(아래)
fun findByCategoryIdAndIdGreaterThanOrderByIdDesc( //상품리스트가 위쪽으로 스크롤 될때
categoryId: Int?, id: Long, pageable: Pageable
): List<Product> //Pageable 은 화면당 보여줄 개수와 몇번째 페이지를 가져올 지 결정하는 객체이다.
- 아래는 안드로이드 앱에서 아래쪽으로 스크롤 될 때(next 파라미터)
//상품 리스트가 아래쪽으로 스크롤될 때 호출되는 함수로, 현재 화면에 로딩된 것보다 이전(카테고리가 같고, id 크기가 적은) 데이터를 추출하는 쿼리가 실행 된다.(아래)
fun findByCategoryIdAndIdLessThanOrderByIdDesc(
categoryId: Int?, id: Long, pageable: Pageable
): List<Product>
Ps. Get매핑으로 API에 접근하지만, 역시 보안 토큰을 가진 사용자만 상품목록을 출력할 수 있다(아래)
코트린 프로젝트17 (0) | 2022.06.03 |
---|---|
코틀린 프로젝트16 (0) | 2022.05.30 |
코틀린 프로젝트14 (0) | 2022.04.03 |
코들린 프로젝트13 (0) | 2022.04.02 |
코틀린 프로젝트12 (0) | 2022.03.31 |
댓글 영역