백엔드 실습(3)

wltjd1688·2025년 3월 13일

풀사이클

목록 보기
30/74

express-generator와 프로젝트 구조 비교

  • bin
    • www: 포트번호 등과 같은 웹 서버를 구축하는데 필요한 설정 데이터가 정의되어 있는 파일
      => .env파일과 같이 설정 값을 가지고 에러 처리, 기타 추가 설정을 해주는 파일
  • node_modules: Node.js, Express의 필요한 모듈들이 설치되는 폴더
  • public: images, javascript, stylesheets등이 있어, 정적 파일을 띄우는 데 필요한 자료들
  • routes: 각 경로를 담당하는 모듈들이 들어있는 폴더
    => 라우팅 로직을 구현하는 모듈들(cf. 자바의 controller 역할이다)
  • views: 클라이언트에게 html코드로 "화면을 보내주는 파일"
  • app.js: Epress 서버의 시작점 => URL에 따라서 라우팅을 해준다.
  • package.json: 이 프로젝트에 설치된 모듈 이름, 버전 등등 정보들이 작성되어 있는 파일

프로젝트 셋팅 + app.js 구현

1. Express 프로젝트를 세팅하기 위해 필요한 모듈을 설치한다.

이미 만둘어둔 파일에서 다음과 같이 입력하여 설치하였다.
바로 npm으로 설치했더니 node_modules파일이 폴더 제일 밖에 설치가 되어서 init을 추가하였다.

npm init
npm i express dotenv express-validator jsonwebtoken mysql2
  • express-validator: 요청 데이터 유효성 검사와 정체를 위한 모듈
  • express : 웹 프레임워크
  • jsonwebtoken : JWT 인증을 위한 모듈
  • mysql2 : MySQL과 연동하기 위한 모듈
  • dotenv : 환경 변수 관리를 위한 모듈

2. 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);

dotenv를 사용하기에 .env파일을 만들어 port번호를 설정해줄때, 유의미한 번호를 선택하는 것이 좋다.

routes/users.js 구현

예시로 보여준 users.js처럼 아래 항목들도 만들었다.

  • books.js
  • likes.js
  • carts.js
  • orders.js

users.js에서는 회원가입, 로그인, 비밀번호 초기화의 틀을 구현하였다.

const express = require('express');
const router = express.Router();

// 회원가입
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에 맞는 API 경로를 만들어 준다.

dbdiagram users, workbench create

기존에 만든 ERD를 기반으로 workbench에 스키마를 만들어준다.

schama Editor에서 utf8로 Set을 설정함

utf8이 뭔데?
유니코드를 기반으로 한 가변 길이 인코딩 방식으로, 1~4바이트를 사용해 문자를 표현한다.
스키마에서 utf8을 사용하면 한글, 영어, 일본어 등 다양한 언어 데이터를 깨짐 없이 안전하게 저장할 수 있다. 이로 인해 국제적 호환성과 데이터 무결성이 보장된다.

users

Table users {
  id integer [primary key] NN AT
  email varchar(100) nn uq
  name Varchar(45) nn
  password varchar(45) nn
}
profile
일단 해!!!!

0개의 댓글