javascript - Express 4 路由器.route : route not found

标签 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。

最佳答案

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

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

这显然行不通。我不确定 http 方法是否检查函数的数量,但这确实有效:

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

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

关于javascript - Express 4 路由器.route : route not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31189936/

相关文章:

javascript - 如何按升序对奇数数组进行排序,但将偶数保留在其位置?

node.js - 如何在 Cloud Run 上部署 Typescript 项目

javascript - 为什么 Mongoose 排序比原生 javascript 排序慢?

node.js - 在Linux/macOS上安装Electronic时出现问题

node.js - 不使用回调时未定义结果。 Nodejs、Express 和 SQL Server Express

javascript - Typescript 和 ExpressJs 提供的脚本未运行

javascript - 如何向外部 API 发出 GET 和 POST 请求?

javascript - 如何使用 jQuery 从 AJAX 请求获取响应文本

javascript - jquery克隆一个没有文本内容的html结构

JavaScript 类型错误 : cannot read property of undefined