Javascript 返回404s的快线

Javascript 返回404s的快线,javascript,node.js,rest,express,Javascript,Node.js,Rest,Express,我有几个简单的路线,我配置错误,不知道为什么 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'

我有几个简单的路线,我配置错误,不知道为什么

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)上的响应:

在代理路由中,我有一个POST处理程序,它在
/v1/agent/login
处被正确处理。但是,当在
/v1/agent/
处进行GET路由时,在
/v1/agent/123处进行GET路由时,返回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请求重定向到我指定的路由(代理),那么为什么带参数的路由失败,而根路由成功


谢谢

您没有正确地传递回叫

路由器.get('/:id'


您没有正确地传递回调

路由器.get('/:id'


我不确定你的代码片段中是否没有这个,但我在你的routes/agent中没有看到
模块.exports=router
file@LostJon抱歉-是的,它存在(只是我代码片段中的一个疏忽)更改路由顺序,放置
app.use('/v1/agent',agent)
应用程序之前使用('/v1',路由)如下:
app.use('/v1/agent',agent);应用程序使用('/v1',路线)
@RandomUser我之前给它打过一针,但没用。如果我创建了一个新的路由,并将id附加到该路由
/v1/agent/:id
,它会在某种程度上起作用,但是当我继续将它路由到
代理时,它会返回
/
处的默认路由,而不是我为它编写的应该处理请求参数的路由。LOL,检查答案。不确定这是否只是包含在您的代码段中,但是我没有在您的路由/代理中看到
模块.exports=router
file@LostJon抱歉-是的,它存在(只是我代码片段中的一个疏忽)更改路由顺序,放置
app.use('/v1/agent',agent)
应用程序之前使用('/v1',路由)如下:
app.use('/v1/agent',agent);应用程序使用('/v1',路线)
@RandomUser我之前给它打过一针,但没用。如果我创建了一个新的路由,并将id附加到该路由
/v1/agent/:id
,它就会工作,但是当我继续将它路由到
代理时,它会返回
/
处的默认路由,而不是我为它编写的应该处理请求参数的路由。LOL,检查答案。该死的废话。我唯一能从中得到安慰的是,我知道另外两个人一开始也错过了。的确如此。我们三个人今天/今晚学到了一些新东西。天哪。我唯一能从中得到安慰的是,我知道另外两个人一开始也错过了。的确如此,我们三个人今天/今晚学到了一些新东西。
'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;
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);
    }
});