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
반응형
'웹개발 > Node.js' 카테고리의 다른 글
[Node.js] 환경변수로 민감한 정보 가리기(.env) (0) | 2023.02.26 |
---|---|
[Node.js] 이미지 서버 만들기(multer 라이브러리 사용) (0) | 2023.02.26 |
[Node.js] 회원가입, 회원기능 만들기 (0) | 2023.02.25 |
[Node.js] 검색기능 만들기(query string) (0) | 2023.02.24 |
[Node.js] 마이페이지 만들기(로그인 상태에서만 이용 가능한 페이지) (0) | 2023.02.23 |
댓글