0. 들어가기
토이프로젝트 2단계. 1단계와 같은 주제로 구현이 콘솔 프로그램 구현에서 Spring, Spring Boot, RDBMS 사용으로 변경됐다.
0.1 얻어야 할 것
이 프로젝트를 통해 얻어가야 할 것은 다음과 같다.
1. 기본적인 Spring, Spring Boot의 사용 경험
2. RDBMS 사용 경험과 이를 위한 ERD설계 및 개발
3. RESTful API 개발
ERD설계 과정과 RESTful한 API를 만들기 위한 과정을 정리해 보려고 한다.
1. ERD설계
필요한 DB설계를 위해 우선 CRUD를 위한 데이터들을 정리해 보았다.
기본적인 요구조건은 여행과 여정의 저장,수정,조회이다.
여기서 추가적으로 고려해야 할 사항은
1. 한 여행에는 여러 여정이 들어간다.
2. 여정을 각각 저장, 수정할 수 있다.
3. 여정의 종류는 숙박, 이동, 체류 3가지가 있다.
이를 고려해 DB테이블을 설계했다.
1.1 RDBMS-MySQL 테이블
우리가 설계한 DB테이블이다. 모든 데이터는 null이 될 수 없다고 설정하였다.
우선 여행을 보자.
id를 기본키로 가지고, 여행의 시작날짜, 종료날짜, 여행 이름을 컬럼으로 가진다.
다음은 여정이다.
요구사항 중 가장 까다로웠는데, 여정이 3가지 종류로 나뉘고 각각의 컬럼이 관계없이 다르다는 것이다.
여행은 여정을 가지고 있다는 개념으로 가는데, 이 종류가 따로 있으니 우리는 이를 어떻게 정리해야 할 지 난감했다.
이를 기본키와 외래키를 활용하여 설계문제를 해결했다.
우선 3개의 세부 종류는 상속관계를 통해 여정을 상속하도록 하였다. 그리고 상속받는 여정의 종류는 각각 해당 여정의 id값을 자신의 기본키이자 외래키로 활용하여 개념적으로 동일하도록 하였다.
여정은 또한 자신이 속한 여행의 id를 trip_id 외래키로 가지고 있어 여행의 소속관계도 할 수 있게 설계하였다.
2. RESTful API
RESTful API에 대해 처음 공부하고 구현해 보는 경험이었는데, 이 내용도 정리해 보자.
2.1 RESTful한 URL 계층과 HTTP method사용, 구현
RESTful한 API의 조건은 많이 있지만 우리가 가장 기본적으로 해야하는 것에 집중하였다.
저장, 수정, 조회에 맞는 HTTP 메서드를 사용하고, HTTP요청과 응답을 제대로 된 형식으로 진행하는 것이다.
계층형 URL사용을 위해 /trips/itineraries의 여행/여정 계층을 사용하였다.
조회
GET method를 사용해 조회하였다. 다만 요구사항에서 여정의 단건 조회는 없었으므로 여행의 조회(여행에 속한 모든 여정도 같이 조호)만 존재한다.
저장
POST method를 사용했고, 필요한 세부 정보는 쿼리를 통해 받아왔다.
수정
Patch를 사용하였고 저장과 같다.
'개발' 카테고리의 다른 글
Fetch API (0) | 2023.08.07 |
---|---|
Download pre-built shared indexes 공유 인덱스(인덱싱) 알림, 경고(IntelliJ) (0) | 2023.08.05 |
Microsoft Defender configuration(IntelliJ)알림, 경고(윈도우 디펜더 제외:InetlliJ) (0) | 2023.08.05 |
[HTTP] GET, POST method (0) | 2023.08.03 |
메타태그(meta tag), 메타데이터(meta data)란 무엇일까? (0) | 2023.08.03 |