2013-04-15 2 views
3

우리는 별도의 API 앱을 만들고 있지만 기존 express.js 기본 앱의 일부로 사용해야합니다.Express.js 미들웨어 분기 또는 여러 개의 app.routes 미들웨어

제 질문은 API 인증을 올바른 위치에 두는 것입니다. 나는 그것을 미들웨어로 만들고 싶고 API 경로를 처리하기위한 app.routes 미들웨어가 필요하다.

그것은 하위 도메인은 [ 'API'] 인 결정 후 기본 미들웨어 스택 오프

  • 분기하거나 할 수 있습니까?

    또는

    는 인증 미들웨어 넣어 API 메인 app.routes 미들웨어 앞에 미들웨어 app.routes? 그것은 두 미들웨어 (인증 + API app.routes)를 노출 할 수

    또한

    , 내가 두 번째 옵션을 갈 생각입니다 :

편집 (효과 app.routes 미들웨어의 두 층을 갖는) 글로벌리스트에서 하나의 미들웨어로?

답변

10

Express는 자신의 미들웨어와 함께 사용할 수 있습니다. 그래서 대부분의 경로에 대해 하나의 응용 프로그램, 그리고 API 경로에 대한 API 응용 프로그램.

예 : 당신이 알고있는 방법 http://runnable.com/UWx2MZS8trEHAACZ

var express = require('express'); 
var app = express(); 
var api = express(); 

app.configure(function() { 
    app.use(express.static(__dirname)); 
}); 

app.get('/', function(req, res){ 
    res.send('Hello World'); 
}); 

app.get('/api*', api); 

api.configure(function() { 
    api.use(function (req, res, next) { 
    process.stdout.write('checking'); 
    setTimeout(process.stdout.write.bind(process.stdout, '.'), 100); 
    setTimeout(process.stdout.write.bind(process.stdout, '.'), 200); 
    setTimeout(process.stdout.write.bind(process.stdout, '.'), 300); 
    setTimeout(process.stdout.write.bind(process.stdout, '.'), 400); 
    setTimeout(process.stdout.write.bind(process.stdout, '.'), 500); 
    setTimeout(process.stdout.write.bind(process.stdout, '.'), 600); 
    setTimeout(process.stdout.write.bind(process.stdout, '.'), 700); 
    setTimeout(process.stdout.write.bind(process.stdout, '.'), 800); 
    setTimeout(process.stdout.write.bind(process.stdout, '.\n'), 900); 
    setTimeout(function() { 
     next(); 
    }, 1000); 
    }); 
}); 

api.get('*', function (req, res) { 
    res.send('Hello API'); 
}); 

app.listen(process.env.OPENSHIFT_NODEJS_PORT, process.env.OPENSHIFT_NODEJS_IP); 
+0

와우, 내가 부탁 할 수 있습니까? 나는 아직도 그것을 구글이나 공식 웹 사이트에서 찾을 수 없습니다. – Max

+0

예제에서 찾았습니다 : https://github.com/visionmedia/express/tree/master/examples 특별히 (사용하고 싶을 때부터) https://github.com/visionmedia/express/blob /master/examples/vhost/index.js – generalhenry