[TIL 230307] express router

리드민·2023년 3월 6일
0

항해99

목록 보기
7/7

express 에서 router은 어떤 원리로 동작하기 때문에 미들웨어로 라우터를 구현할 수 있는가??

Express에서 Router는 미들웨어가 될 수 있다.

Router는 Express에서 경로 기반 미들웨어를 작성하는 방법이다. 일반적으로 웹 응용 프로그램에서는 여러 경로와 연결된 미들웨어 함수가 필요하므로 Router를 사용하여 관련 미들웨어 함수를 그룹화 할 수 있다.

Router는 express.Router()를 사용하여 생성되며, 해당 인스턴스를 미들웨어로 사용할 수 있다.

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

router.get('/', function(req, res) {
  res.send('Hello World');
});

module.exports = router;

위의 코드에서 router 객체는 express.Router()로 생성되었으며, get 메소드를 사용하여 / 경로에 대한 미들웨어 함수를 정의한다. 이제 다른 파일에서 이 라우터를 가져와서 Express 앱의 경로에 연결할 수 있다.


const express = require('express');
const app = express();
const router = require('./router');

app.use('/', router);

app.listen(3000);

위의 코드에서 app.use()를 사용하여 / 경로와 router를 연결했다.
/ 경로에 대한 요청은 router에서 정의한 미들웨어 함수를 실행하게 된다.

Express에서 Router가 미들웨어로 동작하는 이유는 미들웨어의 동작 원리와 Router의 구조가 유사하기 때문이다.

Express 애플리케이션에서 미들웨어는 HTTP 요청과 응답 사이의 처리를 담당합니다. 즉, 클라이언트의 요청이 서버에 도착하면 미들웨어 함수가 그 요청을 가로채서 필요한 처리를 수행한 후, 다음 미들웨어 함수에게 요청을 전달한다. 이런 식으로 미들웨어 함수가 연속적으로 호출되며, 마지막 미들웨어 함수가 HTTP 응답을 반환하게 된다.

Router는 Express에서 경로 기반 미들웨어를 작성하기 위한 구조로 Router 객체를 사용하면 서로 관련된 미들웨어 함수를 그룹화하여, 특정 경로로 들어오는 요청을 처리할 수 있다. Router 객체는 일종의 미들웨어 함수이며, app.use()나 app.METHOD() 메소드를 사용하여 Express 애플리케이션과 연결할 수 있다.

따라서 Router는 미들웨어의 동작 원리와 유사하게 동작하며, Express 애플리케이션의 미들웨어 스택에 추가하여 사용할 수 있다. 이렇게 Router를 미들웨어로 사용하면, 경로에 따라서 서로 다른 미들웨어 함수를 실행할 수 있기 때문에, Express 애플리케이션을 보다 유연하게 구성할 수 있다.

profile
node.js 개발자가 되고싶은 햇병아리입니다 🐥

0개의 댓글