회원 API
1. 회원가입
Method | POST |
URI | /users/join |
HTTP status code | 성공 201 |
Request Body | { "email" : "사용자가 입력한 이메일", "password" : "사용자가 입력한 비밀번호", "passwordCheck" : "사용자가 더블 확인 한 비밀번호" } |
Response Body |
2. 로그인
Method | POST |
URI | /users/login |
HTTP status code | 성공 200 |
Request Body | { "email" : "사용자가 입력한 이메일", "password" : "사용자가 입력한 비밀번호" } |
Response Body | JWT Token |
3. 비밀번호 초기화 요청
Method | POST |
URI | /users/reset |
HTTP status code | 성공 200 |
Request Body | { "email" : "사용자가 입력한 이메일" } |
Response Body |
4. 비밀번호 초기화(=수정)
Method | PUT |
URI | /users/reset |
HTTP status code | 성공 201 |
Request Body | { "password" : "사용자가 입력한 비밀번호", "passwordCheck" : "사용자가 더블 확인 한 비밀번호" } |
Response Body |
도서API
1. 전체 도서 조회
// 이미지 경로, 조회시 아이템 8개씩 보여주기
// 카테고리 id 어떻게 알고 보내줄까?
Method | GET |
URI | /books |
HTTP status code | 성공 200 |
Request Body | |
Response Body | [ { "book_id" : "도서 id", "title" : "도서명", "category" : "도서 카테고리", "summary" : "요약 설명", "author" : "작가명", "price" : 가격, "likes" : 좋아요 수, "pubDate" : "출간일" }, { "book_id" : "도서 id", "title" : "도서명", "category" : "도서 카테고리", "summary" : "요약 설명", "author" : "작가명", "price" : 가격, "likes" : 좋아요 수, "pubDate" : "출간일" }, ... ] |
2. 개별 도서 조회
// 이미지 경로
Method | GET |
URI | /books/:{bookId} |
HTTP status code | 성공 200 |
Request Body | |
Response Body | { "book_id" : "도서 id", "title" : "도서명", "category" : "도서 카테고리", "format" : "포맷", "isbn" : "isbn", "summary" : "요약 설명", "description" : "상세 설명", "author" : "작가명", "pages" : 쪽 수, "index" : "목차", "price" : 가격, "likes" : 좋아요 수, "liked" : boolean, "pubDate" : "출간일" } |
3. 카테고리별 도서 목록 조회
-new: true=> 신간조회(기준: 출간일 30일 이내)
=>출간일을 설정하면 sql에서 30이내인 것을 계산해 줄 수 있다.
// 이미지 경로, 조회시 아이템 8개씩 보여주기
// 카테고리 id 어떻게 알고 보내줄까?
=>id는 숫자로 사용하고 카테고리 테이블을 생성해서 각 숫자별로 장르를 설정해놓는다.
Method | GET |
URI | /books?category={categoryId}&new={boolean} |
HTTP status code | 성공 200 |
Request Body | |
Response Body | [ { "book_id" : "도서 id", "title" : "도서명", "category" : "도서 카테고리", "summary" : "요약 설명", "author" : "작가명", "price" : 가격, "likes" : 좋아요 수 , "pubDate" : "출간일" }, { "book_id" : "도서 id", "title" : "도서명", "category" : "도서 카테고리", "summary" : "요약 설명", "author" : "작가명", "price" : 가격, "likes" : 좋아요 수 , "pubDate" : "출간일" }, ... ] |
좋아요 API를 위한 ERD
좋아요 API
1. 좋아요 추가
Method | POST |
URI | /likes/:{bookId} |
HTTP status code | 성공 200 |
Request Body | |
Response Body |
2. 좋아요 취소
Method | DELETE |
URI | /likes/:{bookId} |
HTTP status code | 성공 200 |
Request Body | |
Response Body |
장바구니 API를 위한 ERD
장바구니 API
1. 장바구니 담기
Method | POST |
URI | /cart |
HTTP status code | 성공 201 |
Request Body | { "book_id" : "도서 id", "count" : 수량 } |
Response Body |
2. 장바구니 조회
Method | GET |
URI | /cart |
HTTP status code | 성공 200 |
Request Body | |
Response Body | [ { "cartItem_id" : 장바구니 도서 id, "book_id" : 도서 id, "title" : "도서명", "category" : "도서 카테고리", "summary" : "요약 설명", "count" : 수량 "price" : 가격, }, { "cartItem_id" : 장바구니 도서 id, "book_id" : 도서 id, "title" : "도서명", "category" : "도서 카테고리", "summary" : "요약 설명", "count" : 수량 "price" : 가격, }, ... ] |
3. 장바구니 도서 삭제
Method | DELETE |
URI | /cart/:{bookId} |
HTTP status code | 성공 200 |
Request Body | |
Response Body |
4. 장바구니에서 선택한 주문 '예상' 상품 목록 조회
Method | GET |
URI | /cart/:{bookId} |
HTTP status code | 성공 200 |
Request Body | ["cartItem_id", "cartItem_id", ...] |
Response Body | [ { "cartItem_id" : 장바구니 도서 id, "book_id" : "도서 id", "title" : "도서명", "category" : "도서 카테고리", "summary" : "요약 설명", "count" : 수량 "price" : 가격, }, { "cartItem_id" : 장바구니 도서 id, "book_id" : "도서 id", "title" : "도서명", "category" : "도서 카테고리", "summary" : "요약 설명", "count" : 수량 "price" : 가격, }, ... ] |
결제(주문) API를 위한 ERD
결제(주문) API
1. 결제하기
= 주문하기 = 주문등록 = 데이터베이스 주문 insert = 장바구니에서 주문된 상품은 delete
Method | POST |
URI | /orders |
HTTP status code | 성공 200 |
Request Body | { "items" : [ { "cartItem_id" : 장바구니 도서 id, "book_id" : 도서 id, "bookTitle" : "대표 책 제목", "count" : 수량 }, { "cartItem_id" : 장바구니 도서 id, "book_id" : 도서 id, "bookTitle" : "대표 책 제목", "count" : 수량 }, ... ], "delivery" : { "address" : "주소", "receiver" : "받는 사람", "contact" : "010-0000-0000" }, "totalPrice" : 총 금액, "totalCount" : "총 수량" } |
Response Body |
2. 결제목록(내역) 조회
Method | GET |
URI | /orders |
HTTP status code | 성공 200 |
Request Body | |
Response Body | [ { "orders_id" : 주문 id, "create_at" : "주문일자", "delivery" : { "address" : "주소", "veceiver" : "받는 사람", "contact" : "전화번호" }, "bookTitle" : "대표 책 제목", "totalPrice" : "총 금액", "totalCount" : "총 수량" ] |
3. 주문 상세 상품 조회
Method | GET |
URI | /orders/:{orderId} |
HTTP status code | 성공 200 |
Request Body | |
Response Body | [ { "book_id" : 도서 id, "bookTitle" : "대표 책 제목", "author" : "작가명", "price" : 가격, "count" : 수량 }, { "book_id" : 도서 id, "bookTitle" : "대표 책 제목", "author" : "작가명", "price" : 가격, "count" : 수량 }, ... ] |
❄️Express-generator 프로젝트 구조
bin/www
🔸포트 번호 등과 같은 웹 서버를 구축하는데에 필요한 설정데이터가 정의되어 있는 파일
=> .env 파일과 같아 설정 값을 가지고 에러처리, 기타 추가 설정을 해주는 파일
node_modules
🔸Node.js, Express에 필요한 모듈들이 설치되는 폴더
public
🔸images, javascripts, stylesheets ➡️ 정적(ex. 로고, 회사 소개 페이지...)파일
cf. 동적: 사람마다 다른 데이터
routes
🔸각 경로를 담당하는 모듈들이 들어있는 폴더 (= 라우팅 로직을 구현하는 모듈들)
🔸클라이언트에서 어떤 요청을 주냐에 따라서 어떤 로직을 수행할 지 파일별로 분할해서 관리하는 정도
cf. 자바의 controller 역할
views
🔸클라이언트에게 html코드로 화면을 보내는 파일
app.js
🔸Express 서버의 시작점 => URL에 따라서 라우팅을 해준다.
package.json
🔸이 프로젝트에 설치된 모듈이름, 버전 등의 정보들이 작성되어 있는 파일
'공부 > 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js)' 카테고리의 다른 글
프로젝트: Node.js 기반의 REST API 구현(6)-books.js-method 동일 할 때 query || body || params의 값으로 조건문 판별해서 코드 실행시키기 (0) | 2024.10.04 |
---|---|
프로젝트: Node.js 기반의 REST API 구현(5)-users.js-컨트롤러, crypto (0) | 2024.10.02 |
프로젝트: Node.js 기반의 REST API 구현(3)-ERD 도움받기 (1) | 2024.09.30 |
프로젝트: Node.js 기반의 REST API 구현(2)-같이 해보기 (2) | 2024.09.27 |
프로젝트: Node.js 기반의 REST API 구현(1)-스스로 설계해보기 (0) | 2024.09.26 |