Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- JPA
- WebApplication Type
- EnableAutoConfiguration
- @Profile
- JsonSerializer
- OAuth2
- 스프링 부트
- 백기선
- AuthenticationPrincipal
- Spring Security
- 백트래킹
- 백준
- Application Event
- 다익스트라
- 외부설정
- HttpMessageConverters
- 리소스 서버
- 브루트포스
- application.properties
- webjar
- rest api
- cors
- 리소스핸들러
- @ConfigurationProperties
- 정적 리소스
- HATEOAS
- 알고리즘
- 스프링부트
- Application Runner
- Application Argument
Archives
- Today
- Total
아카이브
[스프링 기반 REST API 개발] 이벤트 목록 조회 API 구현 본문
페이징, 정렬을 어떻게 할까?
- spring-data-jpa가 제공하는 Pageable을 사용
Page<Event>에 안에 들어있는 Event 들은 리소스로 어떻게 변경할까?
- 하나씩 순회하면서 직접 EventResource로 맵핑을 시킬까..
- PagedResourceAssembler<T> 사용하기
queryEvents handler 추가하기
@GetMapping
public ResponseEntity queryEvents(Pageable pageable, PagedResourcesAssembler<Event> assembler) {
Page<Event> page = this.eventRepository.findAll(pageable);
PagedModel<EntityModel<Event>> entityModels = assembler.toModel(page, EventResource::new);
entityModels.add(new Link("/docs/index.html#resources-events-list").withRel("profile"));
return ResponseEntity.ok(entityModels);
}
queryEvents Test 추가하기
@Test
@TestDescription("30개의 이벤트를 10개씩 두번째 페이지 조회하기")
void queryEvents() throws Exception {
// Given
IntStream.range(0, 30).forEach(this::generateEvent);
// When
this.mockMvc.perform(get("/api/events")
.param("page", "1")
.param("size", "10")
.param("sort", "name,DESC")
)
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("_embedded.eventList[0]._links.self").exists())
.andExpect(jsonPath("_links.self").exists())
.andExpect(jsonPath("_links.profile").exists())
.andDo(document("query-events"))
;
}
private void generateEvent(int index) {
Event event = Event.builder()
.name("event " + index)
.description("test event")
.build();
this.eventRepository.save(event);
}
page는 0부터 시작하고, size의 기본값은 20이다.
테스트 할 것
- Event 목록 Page 정보와 함께 받기
- content[0].id 확인
- pageable 경로 확인
- Sort과 Paging 확인
- 30개를 만들고, 10개 사이즈로 두번째 페이지 조회하면 이전, 다음 페이지로 가는 링크가 있어야 한다.
- 이벤트 이름순으로 정렬하기
- page 관련 링크
- Event를 EventResource로 변환해서 받기
- 각 이벤트 마다 self
- 링크 확인 self, profile, (create)
- 문서화
'Spring > 스프링 기반 REST API 개발' 카테고리의 다른 글
[스프링 기반 REST API 개발] 이벤트 수정 API 구현하기 (0) | 2021.01.09 |
---|---|
[스프링 기반 REST API 개발] 이벤트 조회 API 구현하기 (0) | 2021.01.09 |
[스프링 기반 REST API 개발] API Index Handler, ErrorsResource 추가하기 (0) | 2021.01.06 |
[스프링 기반 REST API 개발] 테스트용 DB와 설정 분리하기 (0) | 2021.01.06 |
[스프링 기반 REST API 개발] Spring REST Docs 문서 빌드하기 (0) | 2021.01.06 |