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

Express服务器POST请求返回404:用户信息更新接口异常求助

解决Express POST请求404(GET正常)的问题

核心问题是服务器路由与客户端请求的参数传递方式不匹配:

服务器端定义的是路径参数/user/update/:id,但客户端发送请求时用的是查询参数?id=${id},导致Express找不到对应的路由,返回404。


修复方案一:修改客户端,使用路径参数

将客户端的请求URL改为路径参数形式,与服务器路由匹配:

export const updateUser = async (id, userDetails) => {
    // 把?id=${id}替换为/${id},用路径参数传递id
    const endpoint = `${serverIp}/user/update/${id}`;
    try {
        const response = await fetch(endpoint, {
            method: "POST",
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(userDetails)
        })
        const result = await response.json();
        return result;
    } catch (error) {
        console.log(error)
    }
}

修复方案二:修改服务器端,支持查询参数

如果想保留客户端的查询参数方式,调整服务器路由逻辑,从req.query获取id:

userRoutes.route('/user/update').post(function (req, response) {
    let db_connect = dbo.getDb("preview");
    // 从查询参数中获取id,而非路径参数
    let myquery = { _id: ObjectId(req.query.id) };
    let newValues = {
        $set: {
            name: req.body.name,
            user_name: req.body.user_name
        },
    };
    db_connect
        .collection("users")
        .updateOne(myquery, newValues, function (err, res) {
            if (err) throw err;
            console.log('user updated');
            response.json(res);
        })
});

额外检查项

  1. 确认serverIp末尾没有多余斜杠,避免出现//user/update这类无效路径
  2. 验证MongoDB的ObjectId是否正确导入,防止因id格式错误引发后续异常
  3. 可在服务器路由中添加console.log(req.params)或console.log(req.query),确认参数是否正常接收

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:20:22