본문 바로가기
웹개발/Node.js

[Node.js] router 폴더 및 파일로 API관리하기

by 철없는민물장어 2023. 2. 26.
728x90
반응형

지금까지 하나의 서버파일에

여러가지 app.get(), app.post()등의 코드를 작성했다.

이런 코드들을 비슷한 요소들을 묶어 별도의 파일로 관리하고싶을 때는 어떻게 해야할까?

 

우선 route를 보관할 폴더를 하나 만들었다.

/route

그리고 폴더 내부에 js파일을 생성한다.

 

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

router.get('/shop/shirts',function(요청,응답){
    응답.send('셔츠팔아요');
})
router.get('/shop/pants',function(요청,응답){
    응답.send('바지팔아요');
})

module.exports = router;

(shop.js)

이 파일에는 /shop으로 시작하는 url들의 요청을 처리하는 코드들이 있다.

router라는 변수를 선언하여 express라이브러리의 Router()함수를 사용하고

get등의 요청은 이제 router라는 변수로 사용한다.

제일 마지막줄에는 module.exports = router을 작성하여 외부로 보낸다.

 

app.use('/',require('./routes/shop.js'));

(server.js)

다시 서버로 돌아와서,

방금 만들었던 라우터를 사용하기 위해 app.use('경로',require('라우터파일경로'))을 작성했다.

 


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

//로그인 했는지 확인하는 미들웨어
function 로그인했니(요청, 응답, next) {
    if (요청.user) {//로그인 후 세션이 있으면 요청.user가 존재함
        next()
    } else {
        응답.send('로그인 후 이용해 주세요.')
    }
}

router.use(로그인했니);//이렇게 적으면 router가 모든url에서 로그인했니 라는 미들웨어 적용함

router.get('/sub/sports',function(요청,응답){
    응답.send('스포츠게시판');
})
router.get('/sub/game',function(요청,응답){
    응답.send('게임게시판');
})

module.exports= router;

라우터에 미들웨어를 사용할 때는..

router.use(미들웨어) 를 쓰면 편리하다.

혹은 router.use('/경로',미들웨어) 로 작성하면 /경로 하위에 있는 경로들에 한해 미들웨어가 사용된다.

app.use('/board',require('./routes/board.js'));

server.js에 app.use()를 작성하는데, 여기서 첫번째 인자로 적은 경로+라우터파일에 적혀있는 경로 => 최종경로가 된다.

728x90
반응형

댓글