회원 API
회원가입
Method | POST |
URI | /users/join |
HTTP status code | 201 |
Request Body | { email : "사용자가 입력한 이메일", password : "사용자가 입력한 비밀번호" } |
Response Body |
로그인
Method | POST |
URI | /users/login |
HTTP status code | 200 |
Request Body | { email : "사용자가 입력한 이메일", password : "사용자가 입력한 비밀번호" } |
Response Cookie | JWT token |
비밀번호 초기화 요청
Method | POST |
URI | /users/reset |
HTTP status code | 200 |
Request Body | { email : "사용자가 입력한 이메일" } |
Response Body | { email : "이메일" } |
비밀번호 초기화(=수정)
Method | PUT |
URI | /users/reset |
HTTP status code | 200 |
Request Body | { email :"이전 페이지에서 입력했던 이메일", password : "사용자가 입력한 비밀번호" } |
Response Body |
도서 API
전체 도서 조회(이미지경로 n개씩 보내줘야함)
Method | GET |
URI | /books?limit={page당 도서 수}¤tPage={현재 page} |
HTTP status code | 200 |
Request Body | |
Response Body | // 전체 도서 목록에는 도서의 상세 정보를 포함합니다 // 필요한 데이터만 선별하여 구현 부탁드립니다 { books:[ { id : 도서 id, title : "도서 제목", img : 이미지 id(picksum image #id), summary : "요약 정보", author : "도서 작가", price : 가격, likes : 좋아요 수, pubDate :"출간일" }, { id : 도서 id, title : "도서 제목", img : 이미지 id, summary : "요약 정보", author : "도서 작가", price : 가격, likes : 좋아요 수, pubDate :"출간일" }, ... ]. pagination : { currentPage : 현재 페이지, totalBooks : 총 도서 수 } } |
개별 도서 조회
Method | GET |
URI | /books/{bookid} |
HTTP status code | 200 |
Request Body | |
Response Body | { id: 도서 id, title : "도서 제목", img : 이미지 id, categoryName:"카테고리", form:"포맷", isbn : "isbn", summary : "요약 설명", detail :"상세 설명", author : "도서 작가", pages : 쪽 수, contents : "목차", price : 가격, likes : 좋아요 수, liked : boolean, pubDate :"출간일" } |
카테고리별 도서 목록 조회
new : true -> 신간 조회(기준: 출간일 30일 이내)
Method | GET |
URI | /books?limit={page당 도서 수}&tPage={현재 page}&categoryId={categoryId}&new={boolean} |
HTTP status code | 200 |
Request Body | |
Response Body | { books:[ { id : 도서 id, title : "도서 제목", img : 이미지 id(picksum image #id), summary : "요약 정보", author : "도서 작가", price : 가격, likes : 좋아요 수, pubDate :"출간일" }, { id : 도서 id, title : "도서 제목", img : 이미지 id, summary : "요약 정보", author : "도서 작가", price : 가격, likes : 좋아요 수, pubDate :"출간일" }, ... ]. pagination : { currentPage : 현재 페이지, totalBooks : 총 도서 수 } } |
카테고리API
카테고리 전체 조회
Method | GET |
URI | /category |
HTTP status code | 200 |
Request Body | |
Response Body | [ { id:0, categoryName : "동화" }, { id:1, categoryName:"소설" } ... ] |
좋아요 API
좋아요 추가
Method | POST |
URI | /likes/{bookdId} |
HTTP status code | 200 |
Request Header | "Authorization" : 로그인 할때 받은 JWT TOKEN(문자열) |
Request Body | |
Response Body |
좋아요 취소
Method | DELETE |
URI | /likes/{bookdId} |
HTTP status code | 200 |
Request Header | "Authorization" : 로그인 할때 받은 JWT TOKEN(문자열) |
Request Body | |
Response Body |
장바구니 API
장바구니 담기
Method | POST |
URI | /cart |
HTTP status code | 201 |
Request Header | "Authorization" : 로그인 할때 받은 JWT TOKEN(문자열) |
Request Body | { bookId : 도서 id, count : 수량 } |
Response Body |
장바구니 아이템 목록 조회 / 선택한 장바구니 목록 조회
Method | GET |
URI | /cart |
HTTP status code | 200 |
Request Header | "Authorization" : 로그인 할때 받은 JWT TOKEN(문자열) |
Request Body | { selected : [cartIemId,cartItemId, ...] } |
Response Body | { { id : 장바구니 도서 id, bookId : 도서 id, title : "도서 제목", summary : "도서 요약", quantity : 수량, price : 가격 }, { id : 장바구니 도서 id, bookId : 도서 id, title : "도서 제목", summary : "도서 요약", count : 수량, price : 가격 } } |
장바구니 도서 삭제
Method | DELETE |
URI | /cart/{cartItemId} |
HTTP status code | 200 |
Request Body | |
Response Body |
선택한 장바구니 목록 조회
Method | GET |
URI | /cart |
HTTP status code | 200 |
Request Body | [ cartItemId, cartItemId, ... ] |
Response Body | { { cartItemId : 장바구니 도서 id, bookId : 도서 id, title : "도서 제목", summary : "도서 요약", count : 수량, price : 가격 }, { cartItemId : 장바구니 도서 id, bookId : 도서 id, title : "도서 제목", summary : "도서 요약", count : 수량, price : 가격 } } |
(결제)주문 API
결제하기 = 주문하기 = 주문등록 데이터베이스 주문 insert = 장바구니에서 주문된 상품은 delete
Method | POST |
URI | /orders |
HTTP status code | 200 |
Request Header | "Authorization" : 로그인 할때 받은 JWT TOKEN(문자열) |
Request Body | { items : [ 장바구니 도서 id, 장바구니 도서 id ... ], delivery : { address : "주소", reveiver : "이름", contact : "010-0000-0000" }, totalQuantity : "총수량", totalPrice : "총금액", firstBookTitle: 대표 도서 제목 } |
Response Body |
주문 목록(내역) 조회
Method | GET |
URI | /orders |
HTTP status code | 200 |
Request Header | "Authorization" : 로그인 할때 받은 JWT TOKEN(문자열) |
Request Body | |
Response Body | [ { id : 주문 id, createdAt : "주문일자" , address : "주소", reveiver : "이름", contact : "010-0000-0000", bookTitle : "도서 제목", totalPrice: 결재금액, totalQuantity: 총 수량 }, { id : 주문 id, createdAt : "주문일자" , address : "주소", reveiver : "이름", contact : "010-0000-0000", bookTitle : "도서 제목", totalPrice: 결재금액, totalQuantity: 총 수량 }, ... ] |
주문 상세 상품 조회
Method | GET |
URI | /orders/{orderId} |
HTTP status code | 200 |
Request Body | |
Response Body | [ { bookId : 주문 id, title : "도서 제목", author : "작가명", price:"가격", quantity : "수량" }, { bookId : 주문 id, title : "도서 제목", author : "작가명", price:"가격", quantity : "수량" } ] |
테이블
users
id | password | |
1 | kim@mail.com | 1111 |
2 | lee@mail.com | 2222 |
3 | park@mail.com | 3333 |
4 | choi@mail.com | 4444 |
5 | 5555 | |
books
id | title | img | category | form | isbn | summary | detail | author | pages | contents | price | pub_date |
1 | 어린왕자들 | 7 | 0 | 종이책 | 0 | 어리다.. | 어림 | 미상 | 100 | 목차~ | 20000 | 2019-01-01 |
2 | 신데렐라들 | 10 | 0 | 종이책 | 0 | 유리구두.. | 구두 | 미상 | 100 | 목차~ | 20000 | 2023-12-01 |
3 | 백설공주들 | 60 | 1 | 종이책 | 0 | 사과.. | 사과 | 미상 | 100 | 목차~ | 20000 | 2023-11-01 |
4 | 흥부와 놀부들 | 90 | 2 | 종이책 | 0 | 제비.. | 제비 | 미상 | 100 | 목차~ | 20000 | 2023-12-31 |
cateogry
id | category_name |
0 | 동화 |
1 | 소설 |
2 | 사회 |
likes
user_id | liked_book_id |
1 | 1 |
1 | 5 |
1 | 7 |
3 | 1 |
4 | 5 |
6 | 5 |
cartItems
id(PK) | book_id(FK) | quantity | user_id |
1 | 1 | 1 | 1 |
2 | 3 | 2 | 1 |
3 | 2 | 1 | 1 |
4 | 1 | 1 | 2 |
5 | 2 | 1 | 2 |
delivery
id | address | receiver | contact |
1 | 서울시 중구 | 최명수 | 010-1234-5678 |
orders
order_id | delivery_id | total_price | created_at | book_title | total_count | user_id |
1 | 1 | 28000 | 2023-12-01 | 대표책제목 | 4 | 1 |
ordredBook
order_id | book_id | quantity |
1 | 2 | 1 |
1 | 4 | 2 |
1 | 6 | 1 |
'백엔드 > node.js(express)' 카테고리의 다른 글
도서주문관리 프로젝트 - 3. 도서,좋아요 API(SQL시간범위, 페이지네이션,서브쿼리) (1) | 2024.01.11 |
---|---|
도서주문관리 프로젝트 - 2. 유저API(컨트롤러, 단뱡향암호화(crypto),jwt token) (1) | 2024.01.03 |
JWT (0) | 2023.12.26 |
토이프로젝트 유튜브4 (유효성검사,next) (0) | 2023.12.23 |
토이프로젝트 유튜브4(회원API,채널API sql적용) (1) | 2023.12.22 |