[이벤트 조회 및 수정 REST API 개발]_02_Event 조회 API

less than 1 minute read

Event 조회 API

테스트 할 것

조회하는 이벤트가 있는 경우 이벤트 리소스 확인

  • 링크
    • self
    • profile
    • (update)
  • 이벤트 데이터

조회하는 이벤트가 없는 경우 404 응답 확인


테스트 코드

@Test
@TestDescription("기존의 이벤트를 하나 조회하기")
public void getEvent() throws Exception {
    // Given
    Event event = this.generateEvent(100);

    // When & Then
    this.mockMvc.perform(get("/api/events/{id}", event.getId())) //event id를 PathVariable로 넘겨줌
            .andExpect(status().isOk())
            .andExpect(jsonPath("name").exists())
            .andExpect(jsonPath("id").exists())
            .andExpect(jsonPath("_links.self").exists())
            .andExpect(jsonPath("_links.profile").exists())
            .andDo(document("get-an-event"))
    ;
}

@Test
@TestDescription("없는 이벤트는 조회했을 때 404 응답받기")
public void getEvent404() throws Exception {
  // When & Then
  this.mockMvc.perform(get("/api/events/12345"))
    .andExpect(status().isNotFound())
    ;
}
  • 프로파일 링크 url 정보는 asciidoc의 index.adoc 문서확인
@GetMapping("/{id}")
public ResponseEntity getEvent(@PathVariable Integer id) {
    Optional<Event> optionalEvent = this.eventRepository.findById(id);
    if (optionalEvent.isEmpty()) {
        return ResponseEntity.notFound().build();
    }

    Event event = optionalEvent.get();
    EventResource eventResource = new EventResource(event);
    eventResource.add(Link.of("/docs/index.html#resources-events-get").withRel("profile")); // profile 링크 추가
    return ResponseEntity.ok(eventResource);
}