javascript, jQuery & Node.js/Node.js Express.js

Express를 사용해서 서버 구성, 라우터 사용, 미들웨어 (Middleware) 사용

yy_dd2 2024. 6. 19. 15:19
반응형

Express 애플리케이션 구성: Express를 사용하여 서버를 구성하고, 기본적인 라우터와 미들웨어를 설정하기


라우터 사용: 별도의 라우터 파일을 만들어서 라우팅 로직을 분리하고, 이를 메인 애플리케이션에 통합했음
미들웨어: 요청 로그를 기록하는 미들웨어를 추가하여, 콘솔로그를 이용해서 서버에서 처리되는 요청을 추적하기

 

1. 프로젝트 파일 구조

my-node-project/
│
├── express-router-index.js
├── package.json
└── routes/
    └── index.js

 


2. 라우터 파일 작성

routers/index.js

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

// 루트 경로에 대한 GET 요청 처리
router.get('/', (req, res) => {
    res.send('홈페이지');
});

// '/about' 경로에 대한 GET 요청 처리
router.get('/about', (req, res) => {
    res.send('소개 페이지');
});

module.exports = router;

 

 

 

3. Express 애플리케이션에 라우터 적용

express-router-index.js

const express = require('express'); // Express 모듈을 가져옵니다.
const app = express();  // Express 애플리케이션 인스턴스를 생성합니다.
const port = 3000;  // 서버가 리스닝할 포트를 지정합니다.

// 모든 요청을 로그로 기록하는 미들웨어
app.use((req, res, next) => {
    console.log(`${req.method} ${req.url}`);
    next(); // 다음 미들웨어 또는 라우터로 제어를 넘깁니다.
});

// 라우터 파일을 가져옵니다.
const indexRouter = require('./routers/index');

// 기본 라우터 설정
app.use('/', indexRouter);

// 서버를 지정된 포트에서 실행합니다.
app.listen(port, () => {
    console.log(`서버가 실행 중입니다. http://localhost:${port}`);
    // 서버 실행 메시지를 콘솔에 출력합니다.
});

 

위에 코드중에 미들웨어가 추가되어있음

미들웨어의 작동 방식
미들웨어 함수는 보통 세 가지 매개변수를 받음: req (요청 객체), res (응답 객체), next (다음 미들웨어 함수를 호출하는 함수).
app.use((req, res, next) => {
    console.log(`${req.method} ${req.url}`);
    next(); // 다음 미들웨어 또는 라우터로 제어를 전달
});
req: 클라이언트의 요청 정보를 담고 있는 객체
res: 서버의 응답을 관리하는 객체
next: 다음 미들웨어 함수로 제어를 전달하는 함수입니다. 이 함수를 호출하지 않으면 요청이 멈추게 됨

 

app.use() 내용 접은글

더보기

 app.use() 는 미들웨어 함수를 등록하는데 사용하는 메서드
 미들웨어는 요청 응답 객체를 처리하고 다음 미들웨어 함수로 제어를 전달하거나 요청 응답 주기를 종료할 수 있다.
 1. 모든 경로에 대해 미들웨어를 등록
    특정 경로를 지정하지 않으면, `app.use()`는 모든 요청에 대해 미들웨어를 적용
    app.use((req, res, next) => {
        console.log('This middleware runs for all requests');
        next();
    });
2.  특정 경로에 대해 미들웨어를 등록
    특정 경로를 지정하면 해당 경로에 대해서만 미들웨어를 적용한다.
    app.use('/user', (req, res, next) => {
        console.log('This middleware runs for /user path');
        next();
    });
3.  라우터를 등록할때도 사용됨
    미들웨어 외에도 라우터를 등록할 때도 사용됩니다.
    const userRouter = require('./routes/user');
    app.use('/user', userRouter);

 

4.서버실행

node express-router-index.js

브라우저에서 http://localhost:3000/과 http://localhost:3000/about에 접속. 각 경로에 대한 응답을 확인

 

http://localhost:3000

 

http://localhost:3000/about

 

 

 

코드 설명
Express 라우터: routes/index.js 파일에서 라우터를 정의하고, 여러 경로에 대한 요청을 처리
라우터 적용: express-server-index.js 파일에서 app.use('/', indexRouter);를 통해 라우터를 적용
로깅 미들웨어: 모든 요청에 대해 메서드와 URL을 콘솔에 출력하는 미들웨어를 추가. next() 함수는 다음 미들웨어 또는 라우터로 요청을 전달.

 

요약
Express 라우터: 라우터를 사용하여 애플리케이션의 경로를 모듈화하고 구조화.
기본 미들웨어: 로깅 미들웨어를 추가하여 요청 정보를 콘솔에 출력.

반응형