본문 바로가기
Back-End/🌿Express (nodeJS)

[Express] Node.js Router(라우터)로 요청 라우팅

by 코딩하는 동현😎 2022. 6. 10.

https://konkukcodekat.tistory.com/entry/Express-Nodejs-express-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0-%EC%9B%B9-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95-%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4

 

[Express] Node.js , express 설치하기 , 웹서버(백엔드) 구축 , 미들웨어

1. Node.js 설치 nodejs는 JS를 터미널로 실행시킬수 있는 프레임워크 입니다. https://nodejs.org/ko/ Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 위에 사..

konkukcodekat.tistory.com

이전 포스트로 선수 지식입니다.


Router를 사용한 요청 라우팅

router를 사용하면 사용자 요청 패스(url 주소)에 따른 미들웨어 등록할 수 있습니다.

express의 라우터 객체를 만들고, 요청 패스에 따라서 적용할 미들웨어 함수를 정의해 줍니다.

GET 방식으로 요청을 할것이기 때문에 router.get() 함수를 이용해 줍니다.

router 객체를 정의해준다음에 미들웨어로 등록을 해야되는데요 , app.use()를 통해서 라우터 객체와 그 객체를 실행시킬 요청 패스를 작성해줍니다.

(기본값 => / )

app.set('port' , process.env.PORT || 8080);
app.set('host' , '127.0.0.1');

var router = express.Router();

router.route('/').get(function(req,res){
    res.redirect('/source/jquery.html');
});
router.route('/routetest').get(function(req,res){
    res.redirect('http://google.co.kr');
});

app.use('/',router);

위와 같이 작성하고 node app.js 라고 터미널에 작성하면 서버를 구동할 수 있습니다.

127.0.0.1:8080 으로 url을 입력하면 jquery html파일이 브라우저에 뜨고,

127.0.0.1:8080/routetest 으로 입력하면 구글 창으로 이동합니다.


요청 패스에 따라서 라우터를 분리하기

cgv 같은 기업이 있고 , 영화 사업과 팝콘 사업은 한다고 해봅시다.

그러면 홈페이지 , 영화 사이트 , store 사이트가 분리되어 있어야 겠죠?

이것을 라우터를 이용해서 분리해서 작성할 수 있습니다.

 

mainRouter는 홈페이지니까 / 패스에대해 실행하도록 하고

movieRouter는 영화 사이트니까 /movie 에 대해 패스를 설정하고

storeRouter 도 같은 방법으로 설정해줍니다.

var mainRouter = express.Router();

mainRouter.route('/').get(function(req,res){
    res.send('<h1>this is main Page</h1>');
});
mainRouter.route('/routetest').get(function(req,res){
    res.send('<h1>testing Main Page!!!</h1>');
});

app.use('/',mainRouter);

var movieRouter = express.Router();

movieRouter.route('/').get(function(req,res){
    res.send("<h1>This is movie route</h1>")
});
movieRouter.route('/routetest').get(function(req,res){
    res.send('<h1>testing Movie Page!!!</h1>');
});

app.use('/movie',movieRouter);

var storeRouter = express.Router();

storeRouter.route('/').get(function(req,res){
    res.send("<h1>This is popcorn store route!!</h1>")
});
storeRouter.route('/buy').get(function(req,res){
    res.send('<h1>popcorn is on sale ~!!!</h1>');
});

app.use('/store',storeRouter);


실행 결과


Router 객체 주요 메소드

  • get(funtion) : GET 방식으로 특정 경로 요청이 발생했을때 , 콜백 함수 지정
  • post(funtion) : POST 방식으로 특정 경로 요청이 발생했을때 , 콜백 함수 지정
  • put(funtion) : PUT 방식으로 특정 경로 요청이 발생했을때 , 콜백 함수 지정
  • delete(funtion) : DELETE 방식으로 특정 경로 요청이 발생했을때 , 콜백 함수 지정
  • all(funtion) : 모든 요청 방식에 대해서 특정 경로 요청이 발생했을때 , 콜백 함수 지정

등록되지 않은 요청 패스일 경유 오류 페이지 표시

app.all('*', function(req, res) {
res.status(404).send('<h1>ERROR - 페이지를 찾을 수 없습니다.</h1>');
});
반응형

댓글