我有一些簡單的路由,我錯誤配置,不知道爲什麼。快速路由返回404s
app.js:
//app setup
var http = require('http');
var bodyParser = require('body-parser');
var express = require('express');
var routes = require('./routes');
var agent = require('./routes/agent');
var config = require('./config');
var app = express();
app.server = http.createServer(app);
app.use(bodyParser.json({
limit : config.bodyLimit
}));
app.use(bodyParser.urlencoded({
extended : true
}));
app.use('/v1', routes);
app.use('/v1/agent', agent);
app.server.listen(config.port);
console.log('API listening on port ' + app.server.address().port);
module.exports = app;
這將返回/v1/
路線上的反應(index.js):
'use strict';
var express = require('express');
var router = express.Router();
router.get('/', function (req, res) {
res.status(403).json({
message: 'Invalid request.'
});
});
module.exports = router;
在代理路線
,我有被正確處理的POST處理程序在/v1/agent/login
。但同時在/v1/agent/
作品被路由,一個被路由到/v1/agent/123
返回404:
'use strict';
var agentController = require('../controller/agent.js');
var express = require('express');
var router = express.Router();
function handleError(objError, res) {
res.status(500).json({ errorMessage : objError.message });
}
router.get('/', function (req, res) {
res.status(200).json({
message: 'OK' // works fine
});
});
router.get('/:id'), function (req, res) {
var agentNum = req.params.id;
res.send(req.params); // 404 here
try {
//res.status(200).json({ message: 'hello agent.'});
} catch (err) {
// handleError(err, res);
}
};
router.post('/login', function (req, res) {
var agentNum, password;
// works fine
});
router.post('/pwr', function (req, res) {
//also works fine
});
module.exports = router;
我的理解是,app.use
方法應該重定向路徑和附加到路徑到我指定的任何GET請求(代理程序),那麼爲什麼帶有參數的程序失敗而根程序成功?
謝謝
不知道這是否只是沒有包括的您的片斷,但我沒有看到一個'module.exports = router'在**路/代理**文件 – LostJon
@LostJon對不起 - 是,它存在(只是從我的片段中的疏忽) –
改變路線的順序,放'app.use('/ v1/agent',agent);''在'app之前.use('/ v1',routes);'像這樣:'app.use('/ v1/agent',agent); app.use('/ v1',routes);' –