라우팅은 URI(또는 경로) 및 특정한 HTTP 요청 메소드(GET, POST등) 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 법
app.METHOD(PATH, HANDLER)
app.all('/secret', function (req, res, next) {
console.log('Accessing the secret section ...');
next(); // pass control to the next handler
});
다음은 모든 http모듈에서 지원되는 모든 HTTP메소드들을 사용하는 경우, /scret에 대한 요청을 위하여 핸들러가 실행됨.
app.get('/ab?cd', function(req, res) {
res.send('ab?cd');
});
다음의 라우트 경로는 /acd 및 /abcd와 일치.
app.get('/ab(cd)?e', function(req, res) {
res.send('ab(cd)?e');
});
다음의 라우트 경로는 /abe 또는 /abcde와 일치합니다.
app.get(/a/, function(req, res) {
res.send('/a/');
});
다음의 라우트 경로는 라우트이름에 a가 포함된 모든항목과 일치
app.get(/.*fly$/, function(req, res) {
res.send('/.*fly$/');
});
다음의 라우트 경로는 butterfly 및 dragonfly와 일치, 하지만, butterflyman, dragonflyman 등과는 일치하지 않음
파라미터로 전송되는 함수
어떻게 함수가 파라미터로 전송이 되는건가???
그 이유는 javascript는 싱글스레드로, 비동기프로그래밍 방식이다. 따라서 한 작업에 묶여있다기 보다는 먼저 다른작업을 진행하고 있는다.
NON-BLCOKING이라고도 한다.
var cb0 = function (req, res, next) {
console.log('CB0');
next();
}
var cb1 = function (req, res, next) {
console.log('CB1');
next();
}
var cb2 = function (req, res) {
res.send('Hello from C!');
}
app.get('/example/c', [cb0, cb1, cb2]);
라우트 다음에 하나의 콜백함수가 아닌, 배열로도 올 수 있는데, 순서대로 실행이 된다.
만약에, next()로 이어주지 않는다면, 그 함수까지만 실행된다.
var cb0 = function (req, res, next) {
console.log('CB0');
next();
}
var cb1 = function (req, res, next) {
console.log('CB1');
}
var cb2 = function (req, res) {
res.send('Hello from C!');
}
app.get('/example/c', [cb0, cb1, cb2]);
!! 중간에 next()를 뺐을 때
계속 에러가 나지 않고, 삥글삥글 고쳐지기만 한다.. 에러가 안나니 무섭다. 간단한 앱이고 테스트하는데 걱정이 없지만,,, 실제 프로젝트를 진행중일때 이렇게 돌고만 있으면 나도 돌아버릴지도..