You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js Express无法获取URL路径参数?问题求助

问题分析与解决

你的问题出在路由参数定义缺失以及未正确初始化bodyParser中间件,导致无法捕获URL中的2参数。

具体问题点:

  1. 子路由order-process.js中,你定义的是router.get('/', ...),这个路由只会匹配/order路径,无法匹配/order/2这种带参数的路径,自然拿不到req.params。
  2. 你引入了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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:30:31