Node.js Express无法获取URL路径参数?问题求助
问题分析与解决
你的问题出在路由参数定义缺失以及未正确初始化bodyParser中间件,导致无法捕获URL中的2参数。
具体问题点:
- 子路由
order-process.js中,你定义的是router.get('/', ...),这个路由只会匹配/order路径,无法匹配/order/2这种带参数的路径,自然拿不到req.params。 - 你引入了
bodyParser但没有初始化urlencodedParser就直接使用,会导致报错。
修正后的代码:
主服务器代码(清理冗余变量):
var express = require("express"); var isAuthen = require('./middleware/authorize') var app = express(); var order_process = require('./routes/order-process'); app.use('/order', isAuthen, order_process);
order-process.js 修正后:
var express = require('express'); var bodyParser = require('body-parser'); const bcrypt = require("bcrypt"); var router = express.Router(); var db = require('../models/database'); // 初始化urlencodedParser const urlencodedParser = bodyParser.urlencoded({ extended: false }); // 定义带参数的路由,:id是参数占位符,对应URL中的2 router.get('/:id', urlencodedParser, function (req, res) { // 现在可以通过req.params.id获取到2 console.log(req.params.id); // 给客户端返回响应,避免请求挂起 res.send(`获取到的订单ID:${req.params.id}`); }); module.exports = router;
验证:
访问http://localhost:3000/order/2时,控制台会打印2,客户端也会收到对应的响应内容。
内容的提问来源于stack exchange,提问作者Phạm Thanh Liêm
相关产品推荐
相关产品推荐

