1. 주문 기능 구현
1.1. 결제(주문) API - 결제하기 = 주문하기 = 주문등록 = 데이터베이스 주문 INSERT
items -> 결제할 도서가 담겨있는 배열
delivery -> 입력받은 주소/이름/연락처
firstBookTitle -> 주문 목록 상세 조회 화면에서 보여줄 대표 책 제목
(구매한 책이 여러 권일 때 대표책 제목만 보여주기 위해)
Method | POST |
URI | /orders |
HTTP status code | 성공 200 |
Request Body | { items: [ { cartItemId: 장바구니 도서 id, bookId: 도서 id, quantity: 수량 }, { cartItemId: 장바구니 도서 id, bookId: 도서 id, quantity: 수량 }, ... ], delivery: { address: "주소", receiver: "이름", contact: "010-0000-0000" } totalQuantity: 총 수량 totalPrice: 총 금액, userId: 회원 id, firstBookTitle: 대표 도서 제목 } |
Response Body |
1.2. ERD 테이블 보면서 INSERT 순서 결정하기

주문 API 와 관련된 테이블은 orders, delivery, orderedBook
- orders: 주문 테이블
- orderedBook: 주문한 책의 정보만 들어있는 테이블로, order_id 를 가지고 있음
- delivery: 배송 정보만 가지고 있는 테이블
사용자가 주문을 했을 때 orders 테이블에 데이터 삽입이 일어나는데,
orders 테이블은 주문 도서(orderedBook)와 배송 정보(delivery) 를 테이블을 따로 빼서 관리하기 때문에 주문이 들어왔을 때 주문 도서와 배송 정보를 다른 테이블에 입력해줘야 한다.
입력 순서도 중요한데, 입력순서는 delivery -> orders -> orderedBook 순이다.
orders 테이블의 deliver_id 는 delivery 테이블의 id 를 참조하기 때문에 delivery 테이블에 제일 먼저 INSERT
orderedBook 테이블의 order_id 는 orders 테이블의 id 를 참조하기 때문에 orders 테이블에 두번째로 INSERT
orderedBook 을 마지막으로 INSERT
1.3. insertedId
post 메서드로 request 를 보내면, results 에 이런 결과가 담겨온다.

여기서 insertId 필드 값은 AUTO_INCREMENT 를 걸어놨을 때 의미있는 값인데, 데이터베이스 테이블에 데이터가 삽입되었을 때 삽입된 열의 id 값을 돌려준다.
(insertId 값이 3 이란 것은 삽입한 데이터의 열이 3 이란 것)
'TIL with Programmers' 카테고리의 다른 글
[TIL] 10/14 Node.js 비동기 처리 - Promise, async, await, then, query (0) | 2024.10.14 |
---|---|
[회고록] 풀 사이클 개발 데브코스 8주차 회고 (5) | 2024.10.12 |
[TIL] 10/10 장바구니 기능 구현, SQL 에러 (1) | 2024.10.10 |
[TIL] 10/8 좋아요 기능 구현, 서브쿼리-count(), EXISTS,AS (4) | 2024.10.08 |
[TIL] 10/7 API 구현, LEFT JOIN, DATE_ADD, DATE_SUB, 페이징 (0) | 2024.10.07 |