[๋ฐ๋ธ์ฝ์ค] BOOK STORE ํ๋ก์ ํธ API ์ค๊ณ(1)
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ง์ง ํ๋ก์ ํธ๋ผ๊ณ ํ ๋งํ๊ฑธ ์์ํ๋ ๊ฒ ๊ฐ๋ค. ์์ง ํ๋ก ํธ ์ปค๋ฆฌํ๋ผ์ ์์์ ์ํด์ API๋ง ์ฐ์ ๋ง๋๋ ๋ฏ? ํ๋ก ํธ ์๋ ํ๋ก์ ํธ๋ผ๋ ๋๋ฌด ์ด์ํ๊ณ ์ด์ํจ. ์ค๋์ API ์ค๊ณ๋ฅผ ํด๋ณด์๋ค.
ํ์ API
ํ์๊ฐ์ | |
Method | POST |
URL | /join |
HTTP status code | ์ฑ๊ณต: 201 ์คํจ: 400 |
Request Body | { email: "user_email", password: "user_password" } |
Response Body |
๋ก๊ทธ์ธ | |
Method | POST |
URL | /login |
HTTP status code | ์ฑ๊ณต: 200 ์คํจ: 400(์๋ชป๋ ์์ฒญ) 401(๊ถํ x) |
Request Body | { email: "user_email", password: "user_password" } |
Response Body | JWT Token |
๋น๋ฐ๋ฒํธ ์ด๊ธฐํ ์์ฒญ | |
Method | POST |
URL | /user |
HTTP status code | ์ฑ๊ณต: 200 ์คํจ: 400(์๋ชป๋ ์์ฒญ) 401(๊ถํ x) |
Request Body | { email: "user_email" } |
Response Body | JWT Token |
๋น๋ฐ๋ฒํธ ์ด๊ธฐํ | |
Method | PUT |
URL | /user |
HTTP status code | ์ฑ๊ณต: 200 ์คํจ: 400 |
Request Body | { password: "user_password" } |
Response Body |
ํ์ ์ญ์ | |
Method | DELETE |
URL | /user/{user_id} |
HTTP status code | ์ฑ๊ณต: 200 ์คํจ: 400 |
Request Body | |
Response Body |
๋์ API
์ ์ฒด ๋์ ์กฐํ | |
Method | GET |
URL | /books |
HTTP status code | ์ฑ๊ณต 200 |
Request Body | |
Response Body | [ { title: "๋์ ์ ๋ชฉ", summary: "์์ฝ ์ค๋ช ", author: "๋์ ์๊ฐ", price: "๊ฐ๊ฒฉ", likes: "์ข์์ ์", pubDate: "์ถ๊ฐ ๋ ์ง" } { title: "๋์ ์ ๋ชฉ", summary: "์์ฝ ์ค๋ช ", author: "๋์ ์๊ฐ", price: "๊ฐ๊ฒฉ", likes: "์ข์์ ์", pubDate: "์ถ๊ฐ ๋ ์ง" } ] |
๊ฐ๋ณ ๋์ ์กฐํ | |
Method | GET |
URL | /books/{id} |
HTTP status code | ์ฑ๊ณต: 200 |
Request Body | |
Response Body | [ { id: "๋์ id", title: "๋์ ์ ๋ชฉ", category: "์นดํ ๊ณ ๋ฆฌ", format: "ํฌ๋งท", isbn: "isbn", summary: "์์ฝ ์ค๋ช ", author: "๋์ ์๊ฐ", pages: "์ชฝ์", description: "์์ธ ์ค๋ช ", index : "๋ชฉ์ฐจ", price: "๊ฐ๊ฒฉ", likes: "์ข์์ ์", liked: boolean, pubDate: "์ถ๊ฐ ๋ ์ง" } ] |
์นดํ ๊ณ ๋ฆฌ๋ณ ๋์ ๋ชฉ๋ก ์กฐํ | |
Method | GET |
URL | /books?categoryId={categoryId}&new={boolean} |
HTTP status code | ์ฑ๊ณต: 200 |
Request Body | |
Response Body | [ { title: "๋์ ์ ๋ชฉ", summary: "์์ฝ ์ค๋ช ", author: "๋์ ์๊ฐ", price: "๊ฐ๊ฒฉ", likes: "์ข์์ ์", pubDate: "์ถ๊ฐ ๋ ์ง" } ] |
์ข์์ API
์ข์์ ์ถ๊ฐ | |
Method | PUT |
URL | /likes/{bookId} |
HTTP status code | ์ฑ๊ณต: 200 ์คํจ: 404 |
Request Body | |
Response Body |
์ข์์ ์ทจ์ | |
Method | PUT |
URL | /likes/{bookId} |
HTTP status code | ์ฑ๊ณต: 200 ์คํจ: 404 |
Request Body | |
Response Body |
์ฅ๋ฐ๊ตฌ๋ API
์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ | |
Method | POST |
URL | /cart |
HTTP status code | ์ฑ๊ณต: 201 ์คํจ: 404 |
Request Body | { bookId: ๋์ Id, count: ์ } |
Response Body |
์ฅ๋ฐ๊ตฌ๋ ์กฐํ | |
Method | GET |
URL | /cart |
HTTP status code | ์ฑ๊ณต: 200 |
Request Body | |
Response Body | [ { bookId: ๋์ id, title: "๋์ ์ ๋ชฉ", summary: "๋์ ์์ฝ", count: ์๋, price: ๊ฐ๊ฒฉ } { bookId: ๋์ id, title: "๋์ ์ ๋ชฉ", summary: "๋์ ์์ฝ", count: ์๋, price: ๊ฐ๊ฒฉ } ] |
์ฅ๋ฐ๊ตฌ๋ ๋์ ์ญ์ | |
Method | DELETE |
URL | /cart/{bookId} |
HTTP status code | ์ฑ๊ณต: 200 ์คํจ: 404 |
Request Body | |
Response Body |
์ฃผ๋ฌธ API
์ฃผ๋ฌธ ๋ฑ๋ก | |
Method | POST |
URL | /order |
HTTP status code | ์ฑ๊ณต: 201 ์คํจ: 404 |
Request Body | { orderId: "์ฅ๋ฐ๊ตฌ๋ id" } |
Response Body |
์ฅ๋ฐ๊ตฌ๋์์ ์ ํํ ์ฃผ๋ฌธ ์ํ ๋ชฉ๋ก ์กฐํ | |
Method | GET |
URL | /order/{userId} |
HTTP status code | ์ฑ๊ณต: 200 ์คํจ: 404 |
Request Body | |
Response Body | [ { cartItemId: ์ฅ๋ฐ๊ตฌ๋ ๋์ id, bookId: ๋์ id, title: "๋์ ์ ๋ชฉ", summary: "๋์ ์์ฝ", count: ์๋, price: ๊ฐ๊ฒฉ } { cartItemId: ์ฅ๋ฐ๊ตฌ๋ ๋์ id, bookId: ๋์ id, title: "๋์ ์ ๋ชฉ", summary: "๋์ ์์ฝ", count: ์๋, price: ๊ฐ๊ฒฉ } ] |
์ฃผ์ ๊ฐ ์ฉ ๋ง์์ ๋ค์ง๋ ์๋๋ค. ๋์ ์ผํ๋ชฐ์ธ ๊ฒ ๊ฐ์๋ฐ, ๊ฒฐ์ API๋ฅผ ๋ถ์ผ ๊ฒ ์๋๋ฐ ์ฅ๋ฐ๊ตฌ๋์ ์ฃผ๋ฌธ์ ํ์ธ ๊ธฐ๋ฅ๊น์ง ๋ค์ด๊ฐ์ผ ํ๋ ์ถ๋ค๊ฐ๋ ํ์ต์ด ์ฐ์ ์ด๋ CRUD ์๋ฌ์ ์ํด์๋ผ๋ ๋ญ๋ ๊ธฐ๋ฅ ํ๋ ๋ ์์ผ๋ฉด ์ข์ ๊ฒ ๊ฐ๊ธฐ๋ ํ๊ณ . ์ฌ์ค ๊ทธ๋ฅ ์ผํ๋ชฐ ํ๋ก์ ํธ์ธ๊ฒ ๋ง์ ์๋ค์ด์ ์ฅ๋ฐ๊ตฌ๋ ๊ธฐ๋ฅ๋ ๋ง์์ ์๋๋ ๊ฒ ๊ฐ์. ๋๋ง์ ์์ฌ ๋๋์ผ๋ก ํด๋ณด๊ณ ์ถ์๋ฐ ๋ง๋๋ก ํ๋ฉด ์๋๊ฒ ์ง ๋๋๊ณ ๋ฆฌํฉํ ๋ง ํด๋ด์ผ๊ฒ ๋ค.
์ฐ์ ๊ฐ์์ ๋ฐ๋ผ ์ค๊ณ๋ฅผ ์งํํ๋๋ฐ, API ์ค๊ณ๋ฅผ ๋ ์ธ๋ถํ ํ ํ์๊ฐ ์๋ ๊ฒ ๊ฐ๋ค.