πŸ“‹ κ²Œμ‹œνŒ ν”„λ‘œμ νŠΈ


πŸ§‘β€πŸ’» νŒ€μž₯ 및 νŒ€μ› 정보

  • νŒ€μž₯ : 이민혁
  • νŒ€μ› : 김가은, λ°±μ§€μ˜

βš™ 개발 ν™˜κ²½

  • 운영체제(OS): Window, Mac OS
  • 톡합 개발 ν™˜κ²½(IDE) : Intellij Ultimate
  • JDK 버전 : JAVA 11
  • Spring Boot 버전 : 2.7.14
  • λ°μ΄ν„°λ² μ΄μŠ€ : MySQL
  • λΉŒλ“œνˆ΄ : Gradle
  • 버전 관리 툴 : GitHub

πŸ—ƒ 기술 μŠ€νƒ

  • Java
  • Spring Boot
  • MySQL

πŸ“Œ DEPENDENCIES

  • Spring Security
  • Spring Web
  • Spring JPA
  • Lombok
  • MySQL
  • JWT

πŸ“’ λͺ…λͺ…κ·œμΉ™

  • Package

    • μ†Œλ¬Έμžλ‘œ μž‘μ„±ν•œλ‹€.
    • ex) package
  • Java Class

    • 파슀칼 ν‘œκΈ°λ²•μœΌλ‘œ ν•œλ‹€.
    • ex) UserEntity
  • Database

    • Table λͺ… 및 Column λͺ…은 μŠ€λ„€μ΄ν¬ ν‘œκΈ°λ²•μœΌλ‘œ ν•œλ‹€.
    • ex) user_entity
  • Variable and Method

    • 카멜 ν‘œκΈ°λ²•μœΌλ‘œ ν•œλ‹€.
    • ex) userId
  • Mapping-URL

    • μ†Œλ¬Έμžλ‘œ μ‚¬μš©ν•œλ‹€.
    • 단어λ₯Ό / 둜 κ΅¬λΆ„ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.
    • ex) posts/{id}
  • Naming은 μΆ•μ•½ν˜•μ„ μ‚¬μš©ν•˜μ§€ μ•Šκ³  λͺ…μ‹œμ μœΌλ‘œ μž‘μ„±ν•œλ‹€.

🧱 ν”„λ‘œμ νŠΈ ꡬ쑰

  • νšŒμ›κ°€μž…, 둜그인/λ‘œκ·Έμ•„μ›ƒ, κ²Œμ‹œκΈ€μž‘μ„±/쑰회(μ „μ²΄μ‘°νšŒ, μ΄λ©”μΌμ‘°νšŒ)/μˆ˜μ •/μ‚­μ œ, λŒ“κΈ€μƒμ„±/쑰회/μˆ˜μ •/μ‚­μ œμ˜ 12가지 APIλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  • API Request body와 Response bodyλŠ” json νƒ€μž…μœΌλ‘œ ν‘œν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

πŸ—„ ERD

ERD

πŸ“ API

νšŒμ› API

  1. νšŒμ›κ°€μž… (POST)
    1. νŒŒλΌλ―Έν„° :

    2. κ²°κ³Ό

      i. μ‹€νŒ¨ : 이미 λ“±λ‘λœ 이메일이면 μ‹€νŒ¨ 응닡

      ii. 성곡 :

  • 응닡 : νšŒμ›κ°€μž… μ™„λ£Œ , 이미 λ“±λ‘λœ 이메일 μž…λ‹ˆλ‹€.
  1. 둜그인(POST)

    a. νŒŒλΌλ―Έν„° :

    b. κ²°κ³Ό

    i. μ‹€νŒ¨ : 토큰 λ°œν–‰ μ‹€νŒ¨ μ‹œ( μœ μ € 없을 μ‹œ, λΉ„λ°€λ²ˆν˜Έ 뢈일치 μ‹œ)

    ii. 성곡 :

  • 응닡 : 둜그인 성곡 , 둜그인 μ‹€νŒ¨
  1. λ‘œκ·Έμ•„μ›ƒ(POST)

    a. νŒŒλΌλ―Έν„° :

    b. κ²°κ³Ό

    i. μ‹€νŒ¨ :

    ii. 성곡 :

  • 응닡 : λ‘œκ·Έμ•„μ›ƒ 성곡 , λ‘œκ·Έμ•„μ›ƒ μ‹€νŒ¨

κ²Œμ‹œκΈ€ API

  1. κ²Œμ‹œκΈ€ 생성 (POST)

    a. νŒŒλΌλ―Έν„° : 제λͺ©, λ‚΄μš©

    b. κ²°κ³Ό

    i. μ‹€νŒ¨ : μ‚¬μš©μž μ—†λŠ” 경우 μ‹€νŒ¨ 응닡

    ii. 성곡

  • 응닡 : κ²Œμ‹œκΈ€ ID, μ‚¬μš©μž ID, 제λͺ©, λ‚΄μš©, μž‘μ„±μž, λ‹‰λ„€μž„, 생성일 정보λ₯Ό JSON ν˜•μ‹μœΌλ‘œ λ°˜ν™˜
  1. κ²Œμ‹œκΈ€ 쑰회 (GET)

    a. νŒŒλΌλ―Έν„° : -

    b. κ²°κ³Ό

    i. μ‹€νŒ¨ : μ‚¬μš©μž μ—†λŠ” 경우 μ‹€νŒ¨ 응닡

    ii. 성곡

  • 응닡 : κ²Œμ‹œκΈ€ ID, 제λͺ©, λ‚΄μš©, μž‘μ„±μž, 생성일, μ’‹μ•„μš” 수, μ’‹μ•„μš” μ—¬λΆ€ 정보λ₯Ό JSON LIST ν˜•μ‹μœΌλ‘œ λ°˜ν™˜
  1. μž‘μ„±μž μ΄λ©”μΌλ‘œ κ²Œμ‹œλ¬Ό 쑰회 (GET)

    a. νŒŒλΌλ―Έν„° : 이메일

    b. κ²°κ³Ό

    i. μ‹€νŒ¨ : μ‚¬μš©μž μ—†λŠ” 경우 μ‹€νŒ¨ 응닡

    ii. 성곡

  • 응닡 : κ²Œμ‹œκΈ€ ID, 제λͺ©, λ‚΄μš©, μž‘μ„±μž, 생성일, μ’‹μ•„μš” 수, μ’‹μ•„μš” μ—¬λΆ€ 정보λ₯Ό JSON LIST ν˜•μ‹μœΌλ‘œ λ°˜ν™˜
  1. κ²Œμ‹œκΈ€ μˆ˜μ • (PUT) a. νŒŒλΌλ―Έν„° : κ²Œμ‹œκΈ€ ID, 제λͺ©, λ‚΄μš©

    b. κ²°κ³Ό

    i. μ‹€νŒ¨ : μ‚¬μš©μž μ—†λŠ” 경우 μ‹€νŒ¨ 응닡

    ii. 성곡

  • 응닡 : κ²Œμ‹œκΈ€μ΄ μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  1. κ²Œμ‹œκΈ€ μ‚­μ œ (DELETE)

    a. νŒŒλΌλ―Έν„° : κ²Œμ‹œκΈ€ ID

    b. κ²°κ³Ό

    i. μ‹€νŒ¨ : μ‚¬μš©μž μ—†λŠ” 경우 μ‹€νŒ¨ 응닡

    ii. 성곡

  • 응닡 : -

λŒ“κΈ€ API

  1. λŒ“κΈ€ 생성 (POST)

    a. νŒŒλΌλ―Έν„° : μ‚¬μš©μž 토큰, λ³Έλ¬Έ

    b. κ²°κ³Ό

    i. μ‹€νŒ¨ : μ‚¬μš©μž μ—†λŠ” 경우 μ‹€νŒ¨ 응닡, κ²Œμ‹œκΈ€ μ—†λŠ” 경우 μ‹€νŒ¨ 응닡

    ii. 성곡

  • 응닡 : λŒ“κΈ€ ID, κ²Œμ‹œκΈ€ ID, μ‚¬μš©μž 이메일, λ³Έλ¬Έ, μž‘μ„± μ‹œκ°„ JSON LIST ν˜•μ‹μœΌλ‘œ λ°˜ν™˜
  1. λŒ“κΈ€ μˆ˜μ • (PUT)

    a. νŒŒλΌλ―Έν„° : μ‚¬μš©μž 토큰, κ²Œμ‹œκΈ€ ID, λ³Έλ¬Έ

    b. κ²°κ³Ό

    i. μ‹€νŒ¨ : μ‚¬μš©μžκ°€ μ—†λŠ” 경우 μ‹€νŒ¨ 응닡, κ²Œμ‹œκΈ€μ΄ μ—†λŠ” 경우 μ‹€νŒ¨ 응닡, μ‚¬μš©μžκ°€ λ‹€λ₯Έ 경우 μ‹€νŒ¨ 응닡

    ii. 성곡

  • 응닡 : λŒ“κΈ€ ID, κ²Œμ‹œκΈ€ ID, μ‚¬μš©μž 이메일, λ³Έλ¬Έ, μž‘μ„± μ‹œκ°„ JSON LIST ν˜•μ‹μœΌλ‘œ λ°˜ν™˜
  1. λŒ“κΈ€ μ‚­μ œ (DELETE)

    a. νŒŒλΌλ―Έν„° : μ‚¬μš©μž 토큰, κ²Œμ‹œκΈ€ ID, λŒ“κΈ€ ID

    b. κ²°κ³Ό

    i. μ‹€νŒ¨ : μ‚¬μš©μž μ—†λŠ” 경우 μ‹€νŒ¨ 응닡, κ²Œμ‹œκΈ€ μ—†λŠ” 경우 μ‹€νŒ¨ 응닡, λŒ“κΈ€ μ—†λŠ” 경우 μ‹€νŒ¨ 응닡

    ii. 성곡

  • 응닡 : λŒ“κΈ€ μ‚­μ œ 성곡
  1. λŒ“κΈ€ 쑰회 (GET)

    a. νŒŒλΌλ―Έν„° : -

    b. κ²°κ³Ό

    i. μ‹€νŒ¨ : λŒ“κΈ€μ΄ μ—†λŠ” 경우 μ‹€νŒ¨ 응닡

    ii. 성곡

  • 응닡 : JSON LIST ν˜•μ‹μœΌλ‘œ 전체 λŒ“κΈ€ λ°˜ν™˜

μ’‹μ•„μš” API

  1. μ’‹μ•„μš” 생성과 μ·¨μ†Œ (POST)

    a. νŒŒλΌλ―Έν„° : μ‚¬μš©μž 토큰, κ²Œμ‹œκΈ€ ID

    b. κ²°κ³Ό

    i. μ‹€νŒ¨ : μ‚¬μš©μž μ—†λŠ” 경우 μ‹€νŒ¨ 응닡, κ²Œμ‹œκΈ€ μ—†λŠ” 경우 μ‹€νŒ¨ 응닡

    ii. 성곡

    iii. μ‚¬μš©μžκ°€ μ’‹μ•„μš”κ°€ μžˆλ‹€λ©΄ μ’‹μ•„μš” μ·¨μ†Œ μ—†λ‹€λ©΄ μ’‹μ•„μš” 생성

  • 응닡 : μ’‹μ•„μš” 생성 성곡 , μ’‹μ•„μš” μ·¨μ†Œ 성곡

πŸ”— κ²Œμ‹œνŒ κΈ°λŠ₯

κΈ°λŠ₯ 상세 μ°Έκ³ 
νšŒμ› 1. 이메일 λΉ„λ°€λ²ˆν˜Έ μž…λ ₯ν•˜μ—¬ νšŒμ›κ°€μž… API
2. 이메일 λΉ„λ°€λ²ˆν˜Έ μž…λ ₯ν•˜μ—¬ μ ‘μ†ν•˜λŠ” API
3. μ ‘μ†λœ μœ μ € λ‘œκ·Έμ•„μ›ƒ
쑰회 1. κ²Œμ‹œλ¬Ό 전체 μ‘°νšŒν•˜λŠ” API
2. μž‘μ„±μž 이메일을 톡해 νŠΉμ • κ²Œμ‹œλ¬Όλ“€μ„ κ²€μƒ‰ν•˜λŠ” API
3. λŒ“κΈ€μ„ μ‘°νšŒν•˜λŠ” API
생성 1. λŒ“κΈ€μ„ μƒˆλ‘­κ²Œ λ§Œλ“€ 수 μžˆλŠ” API
2. κ²Œμ‹œλ¬Όμ„ μƒˆλ‘­κ²Œ λ§Œλ“€ 수 μžˆλŠ” API
μˆ˜μ • 1. κΈ°μ‘΄ λŒ“κΈ€μ˜ 글을 μˆ˜μ •ν•˜λŠ” API
2. κΈ°μ‘΄ κ²Œμ‹œλ¬Όμ„ μˆ˜μ •ν•  수 μžˆλŠ” API
μ‚­μ œ 1. κ²Œμ‹œλ¬Όμ„ μ‚­μ œν•˜λŠ” API
2. λŒ“κΈ€μ„ μ‚­μ œν•˜λŠ” API
심화 1. κ²Œμ‹œλ¬Ό μ’‹μ•„μš”λ₯Ό ν•  수 μžˆλŠ” κΈ°λŠ₯

βœ”οΈ ν”„λ‘œμ νŠΈ 진행 μˆœμ„œ

  1. μΈμ›λ³„λ‘œ 각자 맑을 APIλ₯Ό μ •ν•œλ‹€. (νšŒμ›, κ²Œμ‹œνŒ, λŒ“κΈ€, μ’‹μ•„μš”)
  2. ν”„λ‘œμ νŠΈμ˜ κ·œμΉ™μ„ μ •ν•˜μ—¬ κ³΅ν†΅λœ κ΅¬ν˜„μ„ ν•  수 μžˆλ„λ‘ μ§„ν–‰ν•œλ‹€. (pakeageλͺ…, DB Tableλͺ… λ“±)
  3. GitHub organization을 μƒˆλ‘œ λ§Œλ“€μ–΄ Repositoryλ₯Ό 생성 ν›„ 각자 branchλ₯Ό μƒμ„±ν•˜μ—¬ 개인이 맑은 API κ΅¬ν˜„μ„ μ‹œμž‘ν•œλ‹€.
  4. API κ΅¬ν˜„μ„ μ™„λ£Œν•˜κ³  Postman으둜 κ΅¬ν˜„λœ APIλ₯Ό ν…ŒμŠ€νŠΈν•œλ‹€.
  5. λͺ¨λ“  branchλ₯Ό base branch에 mergeν•˜μ—¬ 좩돌 사항을 λ¨Όμ € ν™•μΈν•˜κ³  μˆ˜μ •ν•œλ‹€.
  6. merge된 APIλ₯Ό Postman으둜 ν…ŒμŠ€νŠΈ ν•˜κ³  제곡된 깑톡 ν”„λ‘ νŠΈμ™€ μ—°κ²°ν•˜μ—¬ ν…ŒμŠ€νŠΈλ₯Ό ν•œλ‹€.
  7. ν”„λ‘ νŠΈμ™€ APIκ°€ λ§žμ§€ μ•ŠλŠ” 뢀뢄을 μˆ˜μ •ν•˜κ³  ν”„λ‘ νŠΈμ— 좔가적인 κΈ°λŠ₯을 μΆ”κ°€ν•œλ‹€.
  8. λͺ¨λ“  확인이 λλ‚œ ν›„ base branchλ₯Ό main branch에 merge ν•œλ‹€.

application.yaml νŒŒμΌμ— JWT secret key κ°€ ν¬ν•¨λ˜μ–΄ μžˆμ–΄ λ”°λ‘œ μ˜¬λ¦¬μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

파일 κ΅¬λ™μ‹œ application.yaml νŒŒμΌμ„ 생성 및 μˆ˜μ • ν›„ μ‹€ν–‰ ν•΄μ£Όμ‹œκΈ° λ°”λžλ‹ˆλ‹€.