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

Node.js+MySQL构建CRUD API:PUT请求报404错误求助

PUT请求返回404错误的排查与修复方案

核心问题排查方向

  • 客户端请求路径/方法错误
    你的路由定义为/edit/:id,需确保:

    1. 客户端请求时携带了正确的id参数(比如/edit/123而非/edit);
    2. 请求方法确实为PUT——HTML表单默认是POST,需通过隐藏字段_method="PUT"配合服务器的method-override中间件,或在AJAX请求中明确指定method: 'PUT'。
  • 服务器路由挂载/顺序问题

    1. 检查该路由所在的router是否被正确挂载到主应用,比如若主应用是app.use('/api', router),实际请求路径应为/api/edit/:id;
    2. 确认PUT路由定义在其他匹配相同路径的路由之前,避免被提前拦截。
  • 代码逻辑冗余参数问题
    路由已通过:id传递personId,但代码中从request.body.personId取值,既不符合RESTful规范,也可能因参数缺失导致异常。应直接使用request.params.id获取URL中的id。

修复后的代码(含SQL注入防护)

router.put('/edit/:id', function(request, response, next){
    var firstName = request.body.firstName;
    var lastName = request.body.lastName;
    var personId = request.params.id; // 从URL参数获取目标ID
            
    // 使用参数化查询避免SQL注入风险
    var query = 'UPDATE person SET firstName = ?, lastName = ? WHERE personId = ?';
    
    database.query(query, [firstName, lastName, personId], function(error, data){
        if(error){
            console.error(error); // 优先打印错误,避免直接throw导致服务器崩溃
            return response.status(500).send('更新操作失败');
        }   
        else{
            response.redirect("/mypage");
        }
    }); 
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:22:07