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

Express搭建模拟API服务器时req.params返回undefined如何解决

问题原因
  • 参数名不匹配:你在路由定义中使用的占位符是/:id,因此req.params里对应的属性名是id,而非你解构时用的customer_id,读取不存在的属性自然返回undefined。
  • 额外隐藏问题:Array.find()是同步方法,不需要加await调用;另外从URL参数取出的取值默认是字符串类型,如果你的JSON数据里id是数字类型,用===全等判断会因为类型不匹配,即使参数取值正确也找不到对应数据。
修复方案

修改后的路由代码如下:

router.get("/:id", (req, res) => {
    // 正确读取id参数,同时转成数字匹配JSON中的数值类型
    const { id } = req.params;
    const customerId = Number(id);
    console.log('ID NUMBER', customerId);
    try {
        const response = data.find( customer => customer.id === customerId);
        // 新增兜底判断,未找到对应数据返回404状态码
        if(!response) {
            return res.status(404).json({message: '未找到对应客户'});
        }
        console.log(response)
        // 规范写法:status()放在json()前,避免部分场景状态码不生效
        res.status(200).json(response);
    } catch(error) {
        console.error("ERROR: ",error);
        res.status(500).json({message: '服务器内部错误'});
    }
})

内容的提问来源于stack exchange,提问作者tuna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:24:03