express router작성 패턴

YEONGHUN KO·2023년 8월 28일
0

BACKEND - EXPRESS

목록 보기
1/3
post-thumbnail

각각 필요한 route를 folder에 정리하고 각각의 folder를 routes/index.js에서 한번에 선언한 다음 routes/index.js 에서 선언한 routes를 src/index.js에 express에다가 적용하면 routes가 한번에 적용이 된다.

무슨말인지 모르니 일단 코드를 보자 ㅋㅋㅋ

// routes/users.js

const express = require('express');
const signUp = require('./signUp');
const login = require('./login');
const refresh = require('./refresh');
const { seeProfile, modifyProfile } = require('./profile');
const authJwt = require('../../utils/auth');

const router = express.Router();

router.post('/signup', signUp);
router.post('/login', login);
router.get('/profile', authJwt, seeProfile);
router.patch('/profile', authJwt, modifyProfile);
router.post('/refresh', refresh);

module.exports = router;

요런식으로 각각 module과 관련된 routes를 정리해준다.(middleware를 사용해서 더 간소화 해주자.)
users뿐만 아니라 items, cartItems, orders 등등등
그리고 routes/index.js에 한꺼번에 선언

// routes/index.js

const express = require('express');
const usersRouter = require('./users');
const itemsRouter = require('./items');
const cartRouter = require('./cartItem');
const deliveryRouter = require('./delivery');
const ordersRouter = require('./orders');
const { uploadToS3, uploadImage } = require('../utils/upload');

const router = express.Router();

router.use('/users', usersRouter);
router.use('/items', itemsRouter);
router.use('/cart', cartRouter);
router.use('/delivery', deliveryRouter);
router.use('/orders', ordersRouter);
router.post('/upload', uploadToS3.single('image'), uploadImage);

module.exports = router;

그러고 이 routes를 루트 index.js안에 선언된 express와 연결하면 된다.

//src/index.js
const express = require('express');
const morgan = require('morgan');
const cors = require('cors');
const router = require('./routes');

const server = express();
const port = process.env.PORT;

server.use(express.urlencoded({ extended: false }));
server.use(express.json());
server.use(cors());

if (process.env.NODE_ENV === 'development') {
  server.use(morgan('dev'));
} else {
  server.use(morgan('tiny'));
}

server.use('/', router);

출처: https://github.com/kshired/ShoppingCart

profile
'과연 이게 최선일까?' 끊임없이 생각하기

0개의 댓글