express-generator 구조
- bin/www : 포트 번호 등과 같은 웹 서버를 구축하는데에 필요한 설정 데이터가 정의되어 있는 파일 > .env 파일과 같이 설정 값을 가지고 에러처리, 기타 추가 설정을 해주는 파일
- node_modules : Node.js, Express에 필요한 모듈들이 설치되는 폴더
- public : images, javascripts, stylesheet > 정적(로고, 회사 소개 페이지...) 파일 `프론트에서 사용`
* 동적 : 사람마다 다른 데이터
- routes : 각 경로를 담당하느 하위의 모듈들이 들어있는 폴더 = 라우팅 로직을 구현하는 모듈들 : 클라이언트에서 어떤 요청을 주냐에 따라서 어떤 로직을 수행할 지 파일별로 분할해서 관리하는 정도
*자바 스프링의 controller 역할
- views : 클라이언트에게 html 코드로 "화면을 보내는 파일"
- app.js : 서버의 시작점 > URL에 따라서 라우팅을 해준다.
- package.json : 프로젝트에 설치된 모듈의 이름 버전 등 정보들이 작성되어있는 파일
generator 사용하지 않고 프로젝트 사용하기
{
"dependencies": {
"dotenv": "^16.4.5",
"express": "^4.19.2",
"express-validator": "^7.0.1",
"jsonwebtoken": "^9.0.2",
"mysql2": "^3.9.7"
}
}
//터미널
npm i express
npm i dotenv express-validator jsonwebtoken mysql2
app.js
포트번호는 유의미한 포트 번호를 지정하는게 좋다 > .env 파일에서 관리하기
const express = require("express");
const app = express();
const dotenv = require("dotenv");
dotenv.config();
app.listen(process.env.PORT);
const userRouter = require("./router/users");
app.use("/users", userRouter);
route > 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.post("/reset", (req, res) => {
res.json("비밀번호 초기화");
});
module.exports = router;
postman 으로 테스트하기
api 통일감 주기
books, carts, likes, orders, users 기본 틀 생성
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) => {
//req.query.categoryId
res.json("카테고리별 도서 조회");
});
module.exports = router;
데이터베이스 DB users 생성
☑️ 배운 점
이전 이론 수업의 플젝 세팅을 복습하는 것과 같았다.
처음에는 버벅거리던 것을 내손으로 먼저 작성하고 후다닥 강의를 들으니 어느정도 많이 node.js에 익숙해진 것 같아 기쁘다ㅎㅎ