본문 바로가기
프로그래밍/Backend

[Backend] Nodejs router

by 개발 까마귀 2021. 3. 29.
반응형

Nodejs router

 

안녕하세요. 개발자 개발 까마귀입니다. 

오늘은 Nodejs router에 대해 알려드리겠습니다. 

저번에 routing이 뭔지 알려드렸죠?

"라우팅은 URI(또는 경로) 및 특정한 HTTP 요청 메소드(GET, POST 등)인 특정 엔드 포인트에 대한 클라이언트 요청에대한 응답을 말합니다." 라고요

 

그리고 저번에

const express = require("express");
const app = express();

app.get("/", function(req, res) {
    res.send("hello world");
})

app.listen(8082, function() {
    console.log("8082 server start");
})

이렇게 app.get으로 routing을 했습니다. 이렇게 해도 되지만 

 

express에서는 router를 지원해줍니다.

그러면 router를 왜 쓸까요? router를 쓰는 이유는 경로에 대하여 체인 가능한 라우트 핸들러를 작성할 수 있습니다.

 

일단 예시를 볼까요?

 

여러분은 홈페이지 주소에 /main에 관한 페이지에 대한 get, post

그리고 게시글에 해당하는 /post 페이지에 대한 get, post

뭐 로그인도 있을거고 또 /signup도 있을겁니다.

이거를 계속

 

app.get('/main', function(){....})

app.post('/main/upload', function(){....})

app.get('/main/userLoad', function(){....})

 

앞에 main을 붙이면 매우 힘들겠죠? 

 

우선 코드를 보면 이해가 빠를겁니다.

 

routes/main.js

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

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

module.exports = router;

 

main에 관한 애들을 모아둘 main.js를 만들고 그거를 다른 데에도 쓸수있게 module.exports를 해줍니다.

 

index.js

const express = require("express");
const app = express();
const main = require('./routes/main');

app.use('/main', main);

app.listen(8082, function() {
    console.log("8082 server start");
})

그런 다음 index.js에서 app.use를 해서 계속 중복이되는 주소를 적어주고 그 뒤에 routes를 등록을 해줍니다. 

이러면 계속 반복해서 /main을 적어줄 필요가없습니다. 이런거를 미들웨어라고합니다. 중간에 처리를 하니깐요.

 

이렇게하면 오타와 중복을 해결할 수 있습니다. 두 마리 토끼를 잡는거죠 ㅎㅎ 

 

이렇게 해도 되고 저는 controller.js랑 render하는 render.js를 만들어서 render하는 애들 따로 controller하는 애들 따로해서 나누기도합니다. 각자 스타일이 있으니깐 스타일에 맞게 하면 됩니다. ㅎㅎ

 

감사합니다.

 

반응형

댓글