2024년 10월 1일
liked는 likeses 테이블에서 liked_book_id로 지정할 예정.
카테고리별 도서 목록 조회에서는 category_id를 url로 요청할 것이니까 카테고리별 도서를 보여주기 위해 category 테이블을 만들어야 한다
신간 조회는 sql로 범위를 걸 예정
새로운 프로젝트 생성 : bookshop
이전에 받았던 dependencies 이용할 예정
프로젝트 기본 구성을 위해 dependencies 설치해보자
// app.js
// express 모듈
const express = require('express');
const app = express();
// dotenv 모듈
const dotenv = require('dotenv');
dotenv.config();
app.listen(process.env.PORT);
// .env
PORT = 9999
localhost:9999 → Cannot GET / 보임 → 서버 잘 작동함
routes 폴더 만들고, users.js 생성
// users.js
const express = require('express');
const router = express.Router();
router.use(express.json());
// 회원가입
router.post('/join', (req, res) => {
res.json('회원가입');
});
// 로그인
router.post('/login', (req, res) => {
res.json('로그인');
});
// 비밀번호 초기화 요청
router.post('/reset', (req, res) => {
res.json('비밀번호 초기화 요청');
});
// 비밀번호 초기화
router.put('/reset', (req, res) => {
res.json('비밀번호 초기화');
});
module.exports = router;
// app.js
// express 모듈
const express = require('express');
const app = express();
// dotenv 모듈
const dotenv = require('dotenv');
dotenv.config();
app.listen(process.env.PORT);
const userRouter = require('./routes/users');
app.use('/users', userRouter);
POSTMAN) POST + localhost:9999/users/join
다양한 분기가 필요해보임
나머지도 연결해주기
// books.js
const express = require('express');
const router = express.Router();
router.use(express.json());
// 전체 도서 조회
router.get('/', (req, res) => {
res.json('전체 도서 조회');
});
// 개별 도서 조회
router.get('/:id', (req, res) => {
res.json('개별 도서 조회');
});
// 카테고리별 도서 목록 조회
router.get('/', (req, res) => {
res.json('카테고리별 도서 조회');
});
// 쿼리 스트링은 res.query.categoryId를 이용할 예정
module.exports = router;
// likes.js
const express = require('express');
const router = express.Router();
router.use(express.json());
// 좋아요 추가
router.post('/:id', (req, res) => {
res.json('좋아요 추가');
});
// 좋아요 삭제
router.delete('/:id', (req, res) => {
res.json('좋아요 삭제'};
});
module.exports = router;
// carts.js
const express = require('express');
const router = express.Router();
router.use(express.json());
// 장바구니 담기
router.post('/', (req, res) => {
res.json({'장바구니 담기'});
});
// 장바구니 조회
router.get('/', (req, res) => {
res.json({장바구니 조회');
});
// 장바구니 도서 삭제
router.delete('/:id', (req, res) => {
res.json('장바구니 도서 삭제');
});
// 장바구니에서 선택한 주문 예상 상품 목록 조회
// router.get('/', (req, res) => {
// res.json('장바구니에서 선택한 주문 예상 상품 목록 조회');
// });
module.exports = router;
// orders.js
const express = require('express');
const router = express.Router();
router.use(express.json());
// 주문 하기
router.post('/', (req, res) => {
res.json({'주문 하기'});
});
// 주문 목록(내역) 조회
router.get('/', (req, res) => {
res.json({'주문 목록(내역) 조회'});
});
// 주문 상세 상품 조회
router.get('/:id', (req, res) => {
res.json({'주문 상세 상품 조회'});
});
module.exports = router;
// app.js
// express 모듈
const express = require('express');
const app = express();
// dotenv 모듈
const dotenv = require('dotenv');
dotenv.config();
app.listen(process.env.PORT);
const userRouter = require('./routes/users');
const bookRouter = require('./routes/books');
const likeRouter = require('./routes/likes');
const cartRouter = require('./routes/carts');
const orderRouter = require('./routes/orders');
app.use('/users', userRouter);
app.use('/books', bookRouter);
app.use('/likes', likeRouter);
app.use('/carts', cartRouter);
app.use('/orders', orderRouter);
❗️ users 테이블에 null이 되는 값은 주소값, 연락처는 가능하지만 로그인할 때 필요한 정보는 not null이 기본적임
🍎🍏 오늘의 느낀점 : API 설계 마무리부터 프로젝트 기본 셋팅, db만들기까지,, 그동안 배웠던 것들을 주욱 기억해보면서 따라하는 실습시간을 가졌다. API 설계는 역시 로직들을 생각하면서 짜야하니 머리가 아팠다,, 강사님과 같이 해서 그나마 수월했지만 API 설계를 하는 것은 많이 해보아야지 감이 올 것 같다. 다른 플젝들을 보면서 다른 사람들은 어떻게 구성했는지 이런것들도 좀 찾아보면서 익혀야겠다.!