두 번째 미션 - 지하철 노선도

Posted by yunki kim on May 22, 2022

1 단계:

기능 요구 사항

1. 지하철 역 관리 API 기능 완성하기

  • StationController를 통해 요청을 처리하는 부분은 미리 구현되어 있음
  • StationDao를 활용하여 지하철 역 정보를 관리
  • 추가 기능: 지하철역 생성 시 이미 등록된 이름으로 요청한다면 에러를 응답

2. 지하철 노선 관리 API 구현하기

  • 지하철역과 마찬가지로 같은 이름의 노선은 생성 불가
  • 노선 관리 API에 대한 스펙은 API 문서v1를 참고

3. End to End 테스트 작성하기

  • 노선 기능에 대한 E2E 테스트를 작성
  • StationAcceptanceTest 클래스를 참고

2 단계:

기능 요구 사항

1. 스프링 JDBC 활용하여 H2 DB에 저장하기

  • Dao 객체가 아닌 DB에서 데이터를 관리하기
  • DB에 접근하기 위한 spring jdbc 라이브러리를 활용하기 (JdbcTemplate 등)

2. H2 DB를 통해 저장된 값 확인하기

  • 실제로 DB에 저장이 잘 되었는지 확인할 수 있도록 설정하기
    • h2 console 활용 가능

3. 스프링 빈 활용하기

  • 매번 생성하지 않아도 되는 객체와 싱글톤이나 static으로 구현되었던 객체들을 스프링 빈으로 관리해도 좋음

3 단계:

기능 요구 사항

지하철 노선 추가 API 수정

  • 노선 추가 시 3가지 정보를 추가로 입력 받음
    • upStationId: 상행 종점
    • downStationId: 하행 종점
    • distance: 두 종점간의 거리
  • 두 종점간의 연결 정보를 이용하여 노선 추가 시 구간(Section) 정보도 함께 등록
  • 변경된 API 스펙은 API 문서v2 참고

구간 관리 API 구현

  • 구간 관리 기능
    • 노선에 구간을 추가
    • 노선에 포함된 구간 정보를 통해 상행 종점부터 하행 종점까지의 역 목록을 응답
    • 구간 제거
  • 구간 관리 API 스펙은 API 문서v2 참고

  도메인 설계에 가장 많은 시간을 사용한 미션이다. 다른 미션에 비해 도메인이 훨씬 복잡하다. 거기에 홍삼 잘못 먹어서 컨디션도 안좋았다. 그래도 기간 내에 완성은 했다. 코드를 짜면서도 설계에 확신이 안든다. 누가 정답 좀 알려 줬으면... 설계에 대한 나만의 답을 빨리 찾는게 나의 목표가 되었다.

  API문서를 보고 API를 만드는 짓을 처음 해봤다. 하지만 기존 프로젝트에서 API문서를 만들어 본적이 있어서 API문서를 파악하는 것은 크게 어렵지 않았다.

  리뷰가 많이 늦었다. 1단계 머지도 리뷰어한테 부탁해서 겨우 됬다. 머지를 못하면 2단계를 못끝낼거 같아서였다. 아무튼, 좀 힘드네.