데브코스

데브코스

[8주차 - DAY3] 주문 API 구현

주문 DB ERD delivery 테이블 생성 orders 테이블 생성 orderedBook 테이블 생성 주문하기 API 구현 orders 테이블의 delivery_id 컬럼이 delivery 테이블을 참고하고 있고, orderedBook 테이블의 order_id 컬럼이 orders 테이블을 참조하고 있으므로 데이터 삽입 순서는 아래와 같다. delivery 테이블 orders 테이블 orderedBook 테이블 설계 수정 Method POST URI /orders HTTP Status Code 성공(201) Request Body { items: [ { cartId: 장바구니 도서 id, bookId: 도서 id, quantity: 수량 }, … ], delivery: { address: “주소”, r..

데브코스

[8주차 - DAY2] 장바구니 API 구현

장바구니 테이블 생성 외래키 이름은 "fk_기준테이블_참조테이블_참조테이블의컬럼명"으로 설정한다. 장바구니 API 구현 라우터 const express = require('express'); const router = express.Router(); const { addToCart, getCartItems, removeCartItem } = require('../controller/CartController') router.use(express.json()); // 장바구니 담기 router.post('/', addToCart); // 장바구니 아이템 목록 조회 // 선택한 장바구니 상품 목록 조회 router.get('/', getCartItems); // 장바구니 도서 삭제 router.delete(..

데브코스

[8주차 - DAY1] 도서 API 구현(3)

좋아요 DB 좋아요 추가 사용자 id는 원래 jwt로 해야 되는데 지금은 일단 테스트한다고 request의 body로 받는다. const addLike = (req, res) => { const bookId = parseInt(req.params.id); const userId = parseInt(req.body.userId); const sql = `INSERT INTO likes (user_id, liked_book_id) VALUES (?, ?)`; const values = [userId, bookId]; conn.query(sql, values, (err, results) => { if (err) { console.log(err); return res.status(StatusCodes.BAD_R..

데브코스

[7주차 - DAY5] 도서 API 구현(2)

DB 외래키 제약 조건 books 테이블의 category_id는 category 테이블의 기본키인 id를 참조한다. DB에 외래키 제약 조건을 추가해 보자. 제약 조건의 이름은 category_id로 설정했다. SQL 카테고리 조인 도서 목록을 응답으로 보내줄 때 카테고리 아이디가 아니라 카테고리 이름이 들어가야 한다. 따라서 books 테이블과 category 테이블을 카테고리 아이디를 기준으로 조인해줘야 한다. SELECT * FROM books LEFT JOIN category ON books.category_id = category.id; 신간 목록 조회 DATE_SUB(기준 날짜, INTERVAL) 함수를 이용하여 특정 시간에서 지정된 값만큼 뺄 수 있다. 참고로 더하는 함수는 DATE_ADD..

데브코스

[7주차 복습 발표] 암호화

crypto 누군가의 공격으로 데이터베이스가 유출될 경우 사용자가 큰 피해를 입을 수 있기 때문에 비밀번호는 암호화해서 저장해야 한다. node.js에는 암호화를 할 수 있는 내장 모듈인 'crypto'가 있다. const crypto = require('crypto'); const password = "1111"; const salt = crypto.randomBytes(64).toString('base64'); const hashPassword = crypto.pbkdf2Sync(password, salt, 10000, 64, 'sha512').toString('base64'); console.log(hashPassword); pbkdf2Sync(원문, 솔트, 해시 함수반복 횟수, 출력 바이트 수, ..

데브코스

[7주차 - DAY4] 도서 API 구현

도서 API 구현 테이블 생성 format이 예약어라서 컬럼명을 form으로 설정했다. BookController 분리 books.js const express = require('express'); const router = express.Router(); const { allBooks, bookDetail } = require('../controller/BookController'); router.use(express.json()); router.get('/', allBooks); // (카테고리별) 전체 도서 조회 router.get('/:id', bookDetail); // 개별 도서 조회 module.exports = router; BookController.js const conn = requ..

데브코스

[7주차 - DAY3] 사용자 API 구현 & 비밀번호 암호화

http-status-codes 모듈 상태 코드를 코드에 숫자로 적어두면 상태 코드를 모르는 사람들은 그 숫자가 무슨 의미인지 파악하기 힘들다. 상태 코드를 모르는 사람들도 알아볼 수 있도록 모듈을 사용해 보자. npm i http-status-codes const { StatusCodes } = require('http-status-codes'); const join = (req, res) => { // ... res.status(StatusCodes.CREATED).json(results); }; 상태 코드 http-status-codes 200 OK 201 CREATED 401 UNAUTHORIZED 403 FORBIDDEN 404 NOT_FOUND 컨트롤러 컨트롤러는 HTTP 요청을 처리하는 파일..

데브코스

[7주차 - DAY2] 도서 정보 API 설계 및 구현

ERD 수정 books 테이블에 category 컬럼을 category_id로 수정하고 category 테이블을 추가했다. 카테고리별 도서 조회에서 카테고리를 쿼리로 받게 된다. 카테고리의 종류는 너무 많기 때문에 모두 문자열로 받게 되면 구현이 어려워질 수 있고 정규화 측면에서도 좋지 않다. 따라서 카테고리 테이블을 별도로 생성한다. 프로젝트 구조 파일/폴더 설명 bin/www 포트 번화 등과 같은 웹 서버를 구축하는데에 필요한 설정 데이터가 정의되어 있는 파일이다. 설정 값을 가지고 에러 처리, 기타 추가 설정을 해준다. node_module Node.js, Express에 필요한 모듈들이 설치되는 폴더이다. public 정적 파일(images, ljavascripts, stylesheets)을 모아..

데브코스

[7주차 - DAY1] 도서 정보 API 설계 및 ERD 설계

전체 ERD 회원 ERD 및 API ERD API 회원가입 Method POST URI /join HTTP Status Code 성공(201) Request Body { email: “사용자가 입력한 이메일” password: “사용자가 입력한 비밀번호” } Response Body 로그인 Method POST URI /login HTTP Status Code 성공(200) Request Body { email: “사용자가 입력한 이메일” password: “사용자가 입력한 비밀번호” } Response Body JWT token 비밀번호 초기화 요청 Method POST URI /reset HTTP Status Code 성공(200) Request Body { email: “사용자가 입력한 이메일” }..

데브코스

[6주차 - DAY5] 도서 정보 API 설계

회원 API 회원 가입 이메일과 비밀번호를 입력받아 회원가입한다. Method POST URI /join HTTP Status Code 성공 (201) Request Body { email: “사용자가 입력한 이메일” password: “사용자가 입력한 비밀번호” } Response Body 로그인 이메일과 비밀번호로 로그인하고, 로그인에 성공하면 토큰을 발행해 준다. Method POST URI /login HTTP Status Code 성공(200) Request Body { email: “사용자가 입력한 이메일” password: “사용자가 입력한 비밀번호” } Response Body JWT token 비밀번호 초기화 요청 비밀번호를 초기화하는 버튼을 클릭했을 때 발생하는 요청이다. Method ..

미안하다 강림이 좀 늦었다
'데브코스' 카테고리의 글 목록 (8 Page)