Express 4 router.route:找不到路由

时间:2015-07-02 16:28:11

标签: javascript node.js express

我遇到了一个奇怪的问题。第一个路由正在工作,但参数化路由返回404错误。

var express = require('express');
var router = express.Router();

router.route('/')
    .get(function (req, res, next) {
        res.send('A list of vehicles.');
    })
    .post(function (req, res, next) {
        res.send('You added a vehicle!');
    });

router.route('/:id')
    .get(function (req, res, next, id) {
        res.send('Vehicle: ' + id);
    })
    .put(function (req, res, next, id) {
        res.send('You edited vehicle: ' + id);
    });

如果我添加此路线:

router.route('/test')
    .get(function (req, res, next) {
        res.send('This is a test.');
    });

......我可以点击该终点。这似乎也适用于我正在使用的另一个路由器,它使用router.get(path, function)router.post(path, function)而不是router.route(path).get()...方法。

我错过了一些明显的东西吗?我正在使用Express~4.12。

1 个答案:

答案 0 :(得分:1)

加,我是个白痴。刚想通了。我看到了一个使用此函数签名的示例:

.get(function (req, res, next, id) {
        res.send('Vehicle: ' + id);
    })

这显然不起作用。我不确定http方法是否检查函数的arity,但这确实有效:

.get(function (req, res, next) {
        res.send('Vehicle: ' + req.params.id);
    })

我不记得我在哪里看过这个例子,但希望这对某人有帮助。