도서관리 시스템 api 설계2

Younha Lee·2026년 2월 10일

TIL

목록 보기
28/68

지난 시간에서 설계한 api 중에 추가된 것들을 확인해볼게요.
지난 시간에 설계한 API

좋아요, 주문, 장바구니의 추가로 인해 erd가 다소 복잡해졌어요.
특히 n:m 관계를 다루는 전문 테이블을 추가했어요.

2. 좋아요 취소

구분내용
MethodDELETE
URI/likes/{bookId}
HTTP status code성공 204
Request Bodyx
Response Bodyx
  • 저는 DELETE의 성공으로 204가 맞다고 생각하여 204를 붙였어요.

4. 장바구니에서 선택한 주문 예상 상품 목록 조회

구분내용
MethodGET
URI/cart
HTTP status code성공 200
Request Body{ cart_item_id, cart_item_id, ...}
Response Body[{ "cartItemId": "장바구니 도서 id","bookId": "도서 id", "title": "도서 제목", "summary": "도서 요약", "count": "수량", "price": "가격" }, { "cartItemId": "장바구니 도서 id", "bookId": "도서 id", "title": "도서 제목", "summary": "도서 요약", "count": "수량", "price": "가격" }]

1. 장바구니에서 선택한 상품 목록 조회

구분내용
MethodPOST
URI/orders
HTTP status code성공 200
Request Body
{
"items": [
{
"bookId": "도서 Id",
"count": "수량"
}
],
"delivery": {
"address": "주소",
"receiver": "이름",
"contact": "010-xxxx-xxxx"
},
"totalPrice": "총 금액"
}
Response Body[ { "cartItemId": "장바구니 도서 id", "bookId": "도서 id", "title": "도서 제목", "summary": "도서 요약", "count": "수량", "price": "가격" }, ... ]

2. 주문 목록(내역) 조회

구분내용
MethodGET
URI/orders
HTTP status code성공 200
Request Body(없음)
Response Body
[
{
"created_at": "주문일자",
"delivery": {
"address": "주소",
"receiver": "이름",
"contact": "전화번호"
},
"bookTitle": "책의 제목",
"totalPrice": "결제 금액",
"totalCount": "총 수량"
}
]
  • 여기서 created_at이 주문일자를 말해요.
  • 결제 금액이 orders에 있어야, 나중에 책 가격이 바뀌어도 예전 가격을 보여줄 수 있어요.

3. 주문 상세 조회

구분내용
MethodGET
URI/orders/{order_id}
HTTP status code성공 200
Request Body(없음)
Response Body
[
{
"bookId": "도서 Id",
"bookTitle": "도서 제목",
"author": "작가명",
"price": "가격",
"count": "수량"
},
{
"bookId": "도서 Id",
"bookTitle": "도서 제목",
"author": "작가명",
"price": "가격",
"count": "수량"
}
]
  • 이건 게시판이 아니므로 author가 user 테이블을 참조하지 않아요.
    책이 여러 개 주문될 수 있으니 배열로 반환해야해요.
profile
할 땐 하고 놀 땐 노는 일일놀놀입니다.

0개의 댓글