노드 라우팅을 HTML/App 및 REST의 두 부분으로 분리하려고했습니다. 여기에 내가 무슨 짓을했는지 있습니다 :NodeJS/Express app.use 시퀀스 및 사용법
app.js :
var appPort = process.env.PORT || 80;
var express = require('express');
var http = require('http');
var appRouter = require('./routes/index');
var restRouter = require('./routes/rest');
var app = express();
var srv = http.createServer(app);
app.set('port', appPort);
app.set('view engine', 'jade');
app.use(express.static(path.join(__dirname, 'public')));
app.use('/api/rest/', restRouter); // this seems not working .. I never get the expected response
app.use('/', appRouter); // I get this even with localhost/api/rest/...
var server = srv.listen(app.get('port'), function() {
debug('Express server listening ' + server.address().address + ':' + server.address().port);
});
하는 index.js :
var express = require('express');
var router = express.Router();
router.get('/*', function (req, res) {
res.send('HOME')
});
module.exports = router;
rest.js
var express = require('express');
var router = express.Router();
router.get('/api/rest/*', function(req, res) {
res.send('REST API');
});
module.exports = router;
내 질문 :
1 일반적으로 이런 식으로 여러 개의 라우터를 구축 할 수 있습니까?
2. get.use의 순서가 중요합니까? 그리고/또는 '다음'을 처리해야합니까? 경우
3. 나는이 같은 매개 변수를 넘겨 줄 수있는 라우터의 내부 데이터베이스에 액세스하려는 모든 도움을
// ...
var client = new pg.Client(dbConnection);
// ...
app.use('/', appRouter(client));
감사합니다!
감사합니다. Matt,이 점이 많은 도움이됩니다.언급 된 자료들을 파헤쳐 보겠습니다. 나는 그것을 얻을 것입니다. – Rainer
유일하게 남은 질문 : 순서가 중요하고 app.use (/) 전에 app.use (/ api/rest /)를 포함하고 있다면 두 번째 app.use가 api/rest 호출을 catch하지 않을까요? – Rainer
잠재적으로 일치 할 수 있습니다. 실행을 멈출 수있는 몇 가지 사항이 있습니다 ('res.end'는 하나입니다, 믿습니다).하지만 그렇게되지 않으면 Express는 다음 미들웨어 구성 요소로 이동하여 실행합니다. –