π₯ νλ‘μ νΈ κ°μ
- νλ‘μ νΈ μ£Όμ : μ¬ν μ¬μ μ κΈ°λ‘κ³Ό κ΄λ¦¬νλ SNS μλΉμ€ 2λ¨κ³
- νλ‘μ νΈ κΈ°κ° : 10μ 23μΌ(μ) ~ 10μ 27μΌ(κΈ) + μ£Όλ§
- μ£Όμ λͺ©ν : Spring Boot, DB μ€κ³, DB νΈλμμ , RESTful API μ€κ³
π¨π¦π¦ ν μκ°
π€ μ‘°μ₯
μ΄λ¦ | μν |
---|---|
μ νλ―Ό | κΉνλΈ νλ‘μ νΈ κ΅¬μ±, AWS RDS μ€μ , μ¬ν λ° μ¬μ Delete |
π₯ νμ
μ΄λ¦ | μν |
---|---|
κΉλμ€ | Swagger μ€μ , μ¬ν Create |
κΉμλΉ | PR ν νλ¦Ώ μ€μ , μ¬μ Create |
μ μ λ¦Ό | μ¬ν Read, μ¬μ Update, μ¬μ Delete |
μ°¨λλ―Ό | μ¬ν Update |
βοΈ Project Settings
- Java λ²μ : 17
- λΉλ & λΉλ λꡬ : Gradle
- Git λΈλμΉ μ λ΅ : Feature Branch → Develop Branch → Main Branch
π οΈ Tech Stacks
- Framework : SpringBoot
- Database λ° ORM μ€μ : MySQL, JPA
- Database λ°°ν¬ : Amazon RDS
- API λ¬Έμν μ€μ : Swagger
- API μμ² ν μ€νΈ λꡬ : Postman
β GitHub Issue λ° Project νμ©
π μ¬μ κ³΅ν΅ νμ μ¬ν
컨벀μ
- μ½λ 컨벀μ : Google Java 컨벀μ μ μ©
https://programmer-ririhan.tistory.com/337- μ»€λ° μ»¨λ²€μ : 곡ν΅λ μ»€λ° ν νλ¦Ώ μ¬μ©
https://kdjun97.github.io/git-github/commit-convention/- PR 컨벀μ : 곡ν΅λ PR ν νλ¦Ώ μ¬μ©
https://github.com/FC-BE-ToyProject-Team3/KDT_Y_BE_Toy_Project2/blob/main/.github/pull_request_template.md
κ°λ°
- RFP λ¬μ±λͺ©νμλ 'μΌμ μ 보μ μμΉ μ 보λ₯Ό νμΈ λ° μΆκ°νλ κ³΅ν΅ μ νΈλ¦¬ν° ν΄λμ€λ₯Ό μ 곡'νλΌκ³ λͺ μλμ΄ μμ§λ§, κ° Domain(Trip, Itinerary)μ μ΄λ―Έ μ¬μ λ³ μμΉμ 보(Place name)λ₯Ό νμΈ λ° μΆκ°ν μ μλ κΈ°λ₯μ΄ κ΅¬νλμ΄ μκΈ° λλ¬Έμ κ³΅ν΅ μ νΈλ¦¬ν° ν΄λμ€λ μ μνμ§ μμ
→ μ¬ν μ‘°ν κΈ°λ₯μ ν΅ν΄ κ° μ¬νμ μν΄μλ μ¬μ μ μμΉμ 보(Place name)λ₯Ό μ‘°νν μ μμ.
→ μ¬μ μμ κΈ°λ₯μ ν΅ν΄ κ° μ¬μ λ³ IDλ₯Ό μλ³μλ‘ μ¬μ©νμ¬ νΉμ μ¬μ μ λν μμΉμ 보(Place name)λ₯Ό μμ ν μ μμ.- κ° Domain λ³ Entity ν΄λμ€μ μ μλμ΄ μλ Setterλ μμ κΈ°λ₯μμλ§ μ¬μ©νλ€.
π κ°λ° κΈ°λ₯ λ° API μ€κ³
Swagger Link : http://localhost:8080/swagger-ui/index.html
API μ€κ³μ Link : https://gifted-feet-c42.notion.site/API-e9ea4d0ca8124b3db1144520489c76bf
1. μ¬ν λ±λ‘
- νμμ μ¬λ¬ μ¬ν κΈ°λ‘μ μ μ₯ν μ μμ΅λλ€.
- βοΈ μ¬ν μΌμ μ κΈ°λ‘ν΄μΌ ν©λλ€. λ³Έ νλ‘μ νΈμμλ νμμ κ³ λ €νμ§ μμ΅λλ€.
- μ¬ν μ 보μλ λ€μ μ λ³΄κ° νμ νλͺ©μΌλ‘ ν¬ν¨λμ΄ μμ΅λλ€.
- βοΈ [μ¬ν] μ μ΄λ¦, μΌμ (μΆλ° λ μ§, λμ°© λ μ§), κ΅λ΄/μΈ μ¬λΆ
createTrip λ©μλ : κ°λ³ μ¬ν μ 보 λ±λ‘
1. μμ² λ©μλ : POST
2. μλν¬μΈνΈ : /trips
3. μμ² λ°μ΄ν° : TripCreateRequest κ°μ²΄
4. μλ΅ λ°μ΄ν°
* μ±κ³΅ μ (HTTP μν μ½λ 200) : λ±λ‘λ μ¬ν μ 보λ₯Ό λ΄μ TripCreateResponse κ°μ²΄
* μλ¬ μ (HTTP μν μ½λ 409) : μ¬νμ μκ°μ΄ μ ν¨νμ§ μμ λ λ°μνλ InvalidTripScheduleException μμΈμ λν μλ¬ μλ΅μ λ°ν
2. μ¬ν μ‘°ν
- νμμ΄ κ°μ§ μ 체 μ¬ν 리μ€νΈλ₯Ό μ‘°νν μ μμ΅λλ€.βοΈ κ° μ¬νμ μμΈ μ¬μ μ 보λ κ°λ³ μ¬ν μ‘°νλ₯Ό ν΅ν΄ μνν©λλ€.
- βοΈ μ 체 μ¬ν 리μ€νΈλ μ¬ν μ 보μ κ° μ¬νμ ν¬ν¨λ μ¬μ μ΄λ¦λ€μ κ°μ΄ 보μ¬μ€λλ€.
- νμμ κ°λ³ μ¬ν μ 보λ₯Ό μ‘°νν μ μμ΅λλ€.βοΈ μ¬μ μ μμΈ μ 보λ₯Ό λͺ¨λ ν¬ν¨ν©λλ€.
- βοΈ νΉμ μ¬νμ λν λͺ¨λ μ¬μ 리μ€νΈλ₯Ό 보μ¬μ€λλ€.
findAllTrips λ©μλ : μ 체 μ¬ν μ 보 μ‘°ν
1. μμ² λ©μλ : GET
2. μλν¬μΈνΈ : /trips
3. μμ² λ°μ΄ν° : μμ
4. μλ΅ λ°μ΄ν°
* μ±κ³΅ μ (HTTP μν μ½λ 200) : μ‘°νλ μ¬ν μ 보μ μ¬μ μ μ΄λ¦λ€μ λ΄μ TripListResponse κ°μ²΄λ€μ λͺ©λ‘μ λ°ν ( List<TripListResponse> )
* μλ¬ μ (HTTP μν μ½λ 409) : μ¬νμ΄ μ‘΄μ¬νμ§ μμ λ λ°μνλ TripNotFoundException μμΈμ λν μλ¬ μλ΅μ λ°ν
getTripById λ©μλ : κ°λ³ μ¬ν μ 보 μ‘°ν
1. μμ² λ©μλ : GET
2. μλν¬μΈνΈ : /trips/{tripId}
3. μμ² λ°μ΄ν° : tripId (μ¬νμ κ³ μ μλ³μ)
4. μλ΅ λ°μ΄ν°
* μ±κ³΅ μ (HTTP μν μ½λ 200) : μ‘°νλ μ¬ν μ 보μ μ¬μ μ 보λ₯Ό λ΄μ TripResponse κ°μ²΄λ₯Ό λ°ν
* μλ¬ μ (HTTP μν μ½λ 409) : μ¬νμ΄ μ‘΄μ¬νμ§ μμ λ λ°μνλ TripNotFoundException μμΈμ λν μλ¬ μλ΅μ λ°ν
3. μ¬ν μμ
νμμ μ¬ν μ 보λ₯Ό μμ ν μ μμ΅λλ€.
βοΈ νΉμ μ¬νμ λν μ 보λ₯Ό μμ ν μ μμ΅λλ€.
editTripById λ©μλ : κ°λ³ μ¬ν μ 보 μμ
1. μμ² λ©μλ : PUT
2. μλν¬μΈνΈ : /trips/{tripId}
3. μμ² λ°μ΄ν° : tripId (μ¬νμ κ³ μ μλ³μ), TripUpdateRequest (μμ ν μ¬ν μ 보)
4. μλ΅ λ°μ΄ν°
* μ±κ³΅ μ (HTTP μν μ½λ 200) : μμ λ μ¬ν μ 보λ₯Ό λ΄μ TripUpdateResponse κ°μ²΄λ₯Ό λ°ν
* μλ¬ μ (HTTP μν μ½λ 409) :
- μ¬νμ΄ μ‘΄μ¬νμ§ μμ λ λ°μνλ TripNotFoundException μμΈμ λν μλ¬ μλ΅μ λ°ν
- μ¬νμ μκ°μ΄ μ ν¨νμ§ μμ λ λ°μνλ InvalidTripScheduleException μμΈμ λν μλ¬ μλ΅μ λ°ν
- μ¬νμ μ΄λ¦μ΄ μ€λ³΅λ λ λ°μνλ DuplicateTripNameException μμΈμ λν μλ¬ μλ΅μ λ°ν
4. μ¬ν μμ
νμμ μ¬ν μ 보λ₯Ό μμ ν μ μμ΅λλ€.
βοΈ νΉμ μ¬νμ λν μ 보λ₯Ό μμ ν μ μμ΅λλ€.
deleteTrip λ©μλ : κ°λ³ μ¬ν μ 보 μμ
1. μμ² λ©μλ : DELETE
2. μλν¬μΈνΈ : /trips/{tripId}
3. μμ² λ°μ΄ν° : tripId (μ¬νμ κ³ μ μλ³μ)
4. μλ΅ λ°μ΄ν°
* μ±κ³΅ μ (HTTP μν μ½λ 200) : μμ λ μ¬νμ tripId λ₯Ό λ°ν
* μλ¬ μ (HTTP μν μ½λ 409) :
- μ¬νμ΄ μ‘΄μ¬νμ§ μμ λ λ°μνλ NullTripListException μμΈμ λν μλ¬ μλ΅μ λ°ν
5. μ¬μ λ±λ‘
- νμμ μ¬λ¬ μ¬μ κΈ°λ‘μ μ μ₯ν μ μμ΅λλ€.
- βοΈ νλμ μ¬νμ μ¬λ¬ κ°μ μ¬μ μ 보λ₯Ό κΈ°λ‘ν μ μμ΅λλ€.
- μ¬μ μ 보μλ λ€μ μ λ³΄κ° νμ νλͺ©μΌλ‘ ν¬ν¨λμ΄ μμ΅λλ€.βοΈ μλ° : μμλͺ , 체ν¬μΈ μΌμ, 체ν¬μμ μΌμ
- βοΈ μ²΄λ₯ : μ₯μλͺ , λμ°© μΌμ, μΆλ° μΌμ
- βοΈ μ΄λ : μ΄λ μλ¨, μΆλ°μ§(μ₯μλͺ ), λμ°©μ§(μ₯μλͺ ), μΆλ° μΌμ, λμ°© μΌμ
create λ©μλ : κ°λ³ μ¬μ μ 보 λ±λ‘
1. μμ² λ©μλ : POST
2. μλν¬μΈνΈ : /itineraries
3. μμ² λ°μ΄ν° : ItineraryCreateRequest κ°μ²΄
4. μλ΅ λ°μ΄ν°
* μ±κ³΅ μ (HTTP μν μ½λ 200) : λ±λ‘λ μ¬ν μ 보λ₯Ό λ΄μ ItineraryCreateResponse κ°μ²΄
* μλ¬ μ (HTTP μν μ½λ 409) :
- μ¬νμ΄ μ‘΄μ¬νμ§ μμ λ λ°μνλ TripNotFoundException μμΈμ λν μλ¬ μλ΅μ λ°ν
- μ¬νμ μκ°λ€μ΄ μ ν¨νμ§ μμ λ λ°μνλ InvalidItineraryScheduleException μμΈμ λν μλ¬ μλ΅μ λ°ν
6. μ¬μ μμ
νμμ μ¬μ μ 보λ₯Ό μμ ν μ μμ΅λλ€.
βοΈ νΉμ μ¬μ μ λν μ 보λ₯Ό μμ ν μ μμ΅λλ€.
editItinerary λ©μλ : κ°λ³ μ¬μ μ 보 μμ
1. μμ² λ©μλ : PUT
2. μλν¬μΈνΈ : /itineraries/{itineraryId}
3. μμ² λ°μ΄ν° : itineraryId (μ¬μ μ κ³ μ μλ³μ), ItineraryUpdateRequest (μμ ν μ¬μ μ 보)
4. μλ΅ λ°μ΄ν°
* μ±κ³΅ μ (HTTP μν μ½λ 200) : μμ λ μ¬μ μ 보λ₯Ό λ΄μ ItineraryUpdateResponse κ°μ²΄λ₯Ό λ°ν
* μλ¬ μ (HTTP μν μ½λ 409) :
- μ¬μ μ΄ μ‘΄μ¬νμ§ μμ λ λ°μνλ ItineraryNotFoundException μμΈμ λν μλ¬ μλ΅μ λ°ν
- μ¬μ μ μκ°λ€μ΄ μ ν¨νμ§ μμ λ λ°μνλ InvalidItineraryScheduleException μμΈμ λν μλ¬ μλ΅μ λ°ν
μ¬μ μ€μΌμ₯΄κ³Ό κ΄λ ¨λ μ ν¨μ± κ²μ¦μ λ€μκ³Ό κ°μ 쑰건μ λ°λΌμ μ€μ νμμ΅λλ€.
7. μ¬μ μμ
νμμ μ¬μ μ 보λ₯Ό μμ ν μ μμ΅λλ€.
βοΈ νΉμ μ¬μ μ λν μ 보λ₯Ό μμ ν μ μμ΅λλ€.
deleteItinerary λ©μλ : κ°λ³ μ¬μ μ 보 μμ
1. μμ² λ©μλ : DELETE
2. μλν¬μΈνΈ : /itineraries/{itineraryId}
3. μμ² λ°μ΄ν° : itineraryId (μ¬μ μ κ³ μ μλ³μ)
4. μλ΅ λ°μ΄ν°
* μ±κ³΅ μ (HTTP μν μ½λ 200) : μμ λ μ¬μ μ itineraryId λ₯Ό λ°ν
* μλ¬ μ (HTTP μν μ½λ 409) :
- μ¬μ μ΄ μ‘΄μ¬νμ§ μμ λ λ°μνλ ItineraryNotFoundException μμΈμ λν μλ¬ μλ΅μ λ°ν
ERD μ€κ³
νλ‘μ νΈ μ€ν νλ©΄
νλ‘μ νΈ κΉνλΈ μ£Όμ: https://github.com/FC-BE-ToyProject-Team3/KDT_Y_BE_Toy_Project2
'Backend' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
κ΄κ΄μ 보 API μ¬μ©νκΈ° (0) | 2023.11.19 |
---|---|
[ν¨μΊ ] ν¨μ€νΈμΊ νΌμ€XμΌλμ: ν μ΄ νλ‘μ νΈ 3λ¨κ³ (0) | 2023.11.19 |
Swagger μ¬μ©νκΈ° (0) | 2023.10.26 |
[MYSQL] Real MySQL 8.0 5μ₯ μ 리 (1) | 2023.10.06 |
[MYSQL] Real MySQL 8.0 4μ₯ μ 리 (0) | 2023.10.06 |