티스토리 뷰
REST API -Event list API
- 이벤트 목록 조회 API 구현
필요한것
- Event 목록 Paging 정보와 함께 Query
- Sort, Paging 여부 확인
- Event -> EventResource로 변환하여 받기
- 각 EventResource 마다 Self 존재 여부 확인
- 링크 정보 확인
- self
- profile
- 문서화
테스트 코드 작성
- 이벤트 데이터 30개 중 10개씩 2번 페이지를 조회하는 테스트 코드
- 테스트 코드를 하나하나 살펴보자.
- 이벤트 데이터 30개 생성
- 페이징 이전에 테스트 데이터가 필요하기때문에 30개의 테스트 데이터를 생성한다.
- 2페이지에 해당하는 이벤트 목록을 요청
- GET /api/events?page=1&size=10&sort=name,DESC로 요청을 보낸다.
- 페이징과 관련된 파라메터들은 어떻게 처리해야할까 ?
페이징 과 정렬
- Spring Data Jpa 가 제공하는 Pageable
- paging 과 관련된 정보들을 받아올 수 있음.
- Pageable.java
문제점
- 페이징 처리와 함께 첫페이지, 이전페이지, 현재페이지, 다음페이지, 마지막 페이지에 대한 링크 정보는 제공되지만, 각 Event의 상세보기에 해당하는 링크정보는 제공되고 있지 않다.
해결 방안
- 먼저 페이징처리된 Event 목록을 Resource list로 변경해야한다.
- 그런 다음 각 Event 들을 Resource 로 변경하여 제공 해야한다.
PagedResourceAssembler
- Page 를 페이징처리가 된 Resource 목록으로 변환해준다.
- 또한 각 Event를 Resource 로 변환 작업이 필요하다.
Profile
- 마지막으로 Profile 에 대한 링크 정보만 추가해주면 필요한 링크정보는 모두 제공하는 셈이다.
- Resource로 변환 되면 링크정보를 추가할수 있는 Method를 가지고 있기 때문에 PagedResources 에 profile 링크를 추가해준다.
최종 테스트 결과
- 테스트는 성공적으로 끝나고, target/generated-snippets/query-events 디렉터리에 snippets가 생성된것을 확인할 수 있다.
'RESTAPI' 카테고리의 다른 글
RESTAPI - 테스트코드 리팩토링 (0) | 2019.08.23 |
---|---|
RESTAPI - Event 수정 API (0) | 2019.08.22 |
RESTAPI - Spring - REST DOCS API Index 생성하기 (0) | 2019.08.19 |
RESTAPI - Spring - REST DOCS 테스트 설정 분리하기 (0) | 2019.08.19 |
RESTAPI - Spring - REST DOCS 문서 빌드하기 (0) | 2019.08.19 |
댓글