🎯 λ„μ„œ ꡬ맀 μ‚¬μ΄νŠΈ 화면을 톡해 APIλ₯Ό μ„€κ³„ν•©λ‹ˆλ‹€.


πŸ“™ Today I Learned

νšŒμ› API 섀계

νšŒμ› κ°€μž…

  • Method : POST

  • URL : /join

  • HTTP Status Code : 201 Created

  • Request Body

  {
    "email": "μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 이메일",
    "password" : "μ‚¬μš©μžκ°€ μž…λ ₯ν•œ λΉ„λ°€λ²ˆν˜Έ"
  }
  • Response Body : x

둜그인

  • Method : POST

  • URL : /login

  • HTTP Status Code : 200 Ok

  • Request Body

  {
    "email": "μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 이메일",
    "password" : "μ‚¬μš©μžκ°€ μž…λ ₯ν•œ λΉ„λ°€λ²ˆν˜Έ"
  }
  • Response Body : JWT Token

λΉ„λ°€λ²ˆν˜Έ μ΄ˆκΈ°ν™” μš”μ²­

  • Method : POST

  • URL : /rest

  • HTTP Status Code : 200 Ok

  • Request Body

  {
    "email": "μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 이메일"
  }
  • Response Body : x

λΉ„λ°€λ²ˆν˜Έ μ΄ˆκΈ°ν™”

  • Method : PUT

  • URL : /rest

  • HTTP Status Code : 200 Ok

  • Request Body

  {
    "email": "μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 이메일"
  }
  • Response Body : x



λ„μ„œ API 섀계

전체 λ„μ„œ 쑰회

  • Method : GET

  • URL : /books

  • HTTP Status Code : 200 Ok

  • Request Body : x

  • Response Body :

[
  {
    "id" : λ„μ„œ id,
    "title": "λ„μ„œ 제λͺ©",
    "summary" : "μš”μ•½ μ„€λͺ…",
    "author" : "λ„μ„œ μž‘κ°€",
    "price" : 가격,
    "likes" : μ’‹μ•„μš” 수,
    "pubDate" : "μΆœκ°„ λ‚ μ§œ"
  },
  {
    "id" : λ„μ„œ id,
    "title": "λ„μ„œ 제λͺ©",
    "summary" : "μš”μ•½ μ„€λͺ…",
    "author" : "λ„μ„œ μž‘κ°€",
    "price" : 가격,
    "likes" : μ’‹μ•„μš” 수,
    "pubDate" : "μΆœκ°„ λ‚ μ§œ"
  },
  ...
]
  • TODO : 이미지 μ£Όμ†Œ 전달, 데이터λ₯Ό 8κ°œμ”© 보내주어야 ν•˜λŠ” 것은 좔후에 고도화할 μ˜ˆμ •μž…λ‹ˆλ‹€.

κ°œλ³„ λ„μ„œ 쑰회

  • Method : GET

  • URL : /books/:id

  • HTTP Status Code : 200 Ok

  • Request Body

{
  "email": "μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 이메일",
  "password" : "μ‚¬μš©μžκ°€ μž…λ ₯ν•œ λΉ„λ°€λ²ˆν˜Έ"
}
  • Response Body :
{
  "id" : λ„μ„œ id,
  "title": "λ„μ„œ 제λͺ©",
  "category" : "μΉ΄ν…Œκ³ λ¦¬",
  "format" : "포맷",
  "isbn" : "isbn",  
  "summary" : "μš”μ•½ μ„€λͺ…",
  "author" : "λ„μ„œ μž‘κ°€",
  "pages" : μͺ½ 수,
  "index" : "λͺ©μ°¨",
  "price" : 가격,
  "likes" : μ’‹μ•„μš” 수,
  "liked" : boolean,
  "pubDate" : "μΆœκ°„ λ‚ μ§œ"
}
  • TODO : 이미지 μ£Όμ†Œ 전달은 좔후에 고도화할 μ˜ˆμ •μž…λ‹ˆλ‹€.

μΉ΄ν…Œκ³ λ¦¬λ³„ μ‹ κ°„ λ„μ„œ 쑰회

  • Method : GET

  • URL : /books?category=:category&new={boolean}

  • HTTP Status Code : 200 Ok

  • Request Body : x

  • Response Body :

[
  {
    "id" : λ„μ„œ id,
    "title": "λ„μ„œ 제λͺ©",
    "summary" : "μš”μ•½ μ„€λͺ…",
    "author" : "λ„μ„œ μž‘κ°€",
    "price" : 가격,
    "likes" : μ’‹μ•„μš” 수,
    "pubDate" : "μΆœκ°„ λ‚ μ§œ"
  },
  {
    "id" : λ„μ„œ id,
    "title": "λ„μ„œ 제λͺ©",
    "summary" : "μš”μ•½ μ„€λͺ…",
    "author" : "λ„μ„œ μž‘κ°€",
    "price" : 가격,
    "likes" : μ’‹μ•„μš” 수,
    "pubDate" : "μΆœκ°„ λ‚ μ§œ"
  },
  ...
]
  • TODO : 이미지 μ£Όμ†Œ 전달, 데이터λ₯Ό 8κ°œμ”© 보내주어야 ν•˜λŠ” 것은 좔후에 고도화할 μ˜ˆμ •μž…λ‹ˆλ‹€.

  • 참고사항 : newκ°€ true일 λ•Œ μ‹ κ°„ 쑰회 기쀀은 μΆœκ°„μΌλ‘œλΆ€ν„° 30일 이내




μ’‹μ•„μš” API 섀계

μ’‹μ•„μš” μΆ”κ°€

  • Method : PUT

  • URL : /likes/:id

  • HTTP Status Code :200 Ok

  • Request Body : x

  • Response Body : x

  • TODO : μΆ”ν›„ api μˆ˜μ • μ˜ˆμ •


μ’‹μ•„μš” μ·¨μ†Œ

  • Method : PUT

  • URL : /likes/:id

  • HTTP Status Code : 200 Ok

  • Request Body : x

  • Response Body : x

  • TODO : μΆ”ν›„ api μˆ˜μ • μ˜ˆμ •




μž₯λ°”κ΅¬λ‹ˆ API 섀계

μž₯λ°”κ΅¬λ‹ˆ λ‹΄κΈ°

  • Method : POST

  • URL : /cart

  • HTTP Status Code : 200 Ok

  • Request Body

  {
    "bookId" : λ„μ„œ id,
    "count" : μˆ˜λŸ‰
  }
  • Response Body : x

μž₯λ°”κ΅¬λ‹ˆ 쑰회

  • Method : GET

  • URL : /cart

  • HTTP Status Code : 200 Ok

  • Request Body : x

  • Response Body

 [
  { 
    "cartItem" : μž₯λ°”κ΅¬λ‹ˆ id,
    "bookId" : λ„μ„œ id,
    "title" : "λ„μ„œ 제λͺ©",
    "summary" : "μš”μ•½ μ„€λͺ…",
    "count" : μˆ˜λŸ‰,
    "price" : 가격
  },
  {
    "cartItem" : μž₯λ°”κ΅¬λ‹ˆ id,
    "bookId" : λ„μ„œ id,
    "title" : "λ„μ„œ 제λͺ©",
    "summary" : "μš”μ•½ μ„€λͺ…",
    "count" : μˆ˜λŸ‰,
    "price" : 가격
  },
 ]

μž₯λ°”κ΅¬λ‹ˆ μ‚­μ œ

  • Method : DELETE

  • URL : /cart/:id

  • HTTP Status Code : 200 Ok

  • Request Body : x

  • Response Body : x




μ£Όλ¬Έ API 섀계

μ£Όλ¬Έμ„œ μž‘μ„±

  • Method : GET

  • URL : /cart

  • HTTP Status Code : 200 Ok

  • Request Body

  • Response Body : x
[
  {
    "cartItem" : μž₯λ°”κ΅¬λ‹ˆ id,
    "bookId" : λ„μ„œ id,
    "title" : "λ„μ„œ 제λͺ©",
    "summary" : "μš”μ•½ μ„€λͺ…",
    "count" : μˆ˜λŸ‰,
    "price" : 가격
  },
  {
    "cartItem" : μž₯λ°”κ΅¬λ‹ˆ id,
    "bookId" : λ„μ„œ id,
    "title" : "λ„μ„œ 제λͺ©",
    "summary" : "μš”μ•½ μ„€λͺ…",
    "count" : μˆ˜λŸ‰,
    "price" : 가격
  },
]
  • TODO : μΆ”ν›„ api μˆ˜μ • μ˜ˆμ •



✏️ ν•œ 쀄 회고

ERD(μ—”ν„°ν‹° 관계 λ‹€μ΄μ–΄κ·Έλž¨) 없이 ν™”λ©΄λ§Œμ„ 보고 APIλ₯Ό μ„€κ³„ν•˜λŠ” 것이 맀우 μ–΄λ ΅λ‹€λŠ” 것을 λŠκΌˆμŠ΅λ‹ˆλ‹€. πŸ˜…

profile
🌱개발 기둝μž₯

0개의 λŒ“κΈ€