상세 컨텐츠

본문 제목

코틀린 프로젝트15

JSP·자바·코틀린

by 김일국 2022. 4. 4. 16:42

본문

이번 포스트는

- 스프링부트 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 은 화면당 보여줄 개수와 몇번째 페이지를 가져올 지 결정하는 객체이다.

상품14개를 입력하고, Get파라미터로 prev 를 보냈을 때 14~11 까지 출력됨(위)

 

- 아래는 안드로이드 앱에서 아래쪽으로 스크롤 될 때(next 파라미터)

//상품 리스트가 아래쪽으로 스크롤될 때 호출되는 함수로, 현재 화면에 로딩된 것보다 이전(카테고리가 같고, id 크기가 적은) 데이터를 추출하는 쿼리가 실행 된다.(아래)
fun findByCategoryIdAndIdLessThanOrderByIdDesc(
    categoryId: Int?, id: Long, pageable: Pageable
): List<Product>

상품14개를 입력하고, Get파라미터로 next 를 보냈을 때 10~1 까지 출력됨(위)

 

Ps. Get매핑으로 API에 접근하지만, 역시 보안 토큰을 가진 사용자만 상품목록을 출력할 수 있다(아래)

'JSP·자바·코틀린' 카테고리의 다른 글

코트린 프로젝트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

관련글 더보기

댓글 영역