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

Node.js & EJS调用delete方法时出现404错误

解决Delete接口返回404但已正确获取项目ID的问题

我来帮你揪出这个404的问题——虽然你已经拿到了正确的项目ID,但Delete请求返回404大概率是路由匹配、请求方式或者URL构造出了岔子。先结合你给出的前端代码片段,梳理几个核心排查方向:

1. 检查前端Delete请求的URL是否正确拼接了项目ID

你代码里的删除按钮点击事件,很可能是URL没正确带上项目ID,或者路径和后端路由不匹配。举个实际的例子,如果你用axios发送请求,正确的写法应该是这样:

// 假设你的项目ID字段是id,后端接口路径是/api/projects/:id
document.querySelectorAll('.delete-btn').forEach(btn => {
  btn.addEventListener('click', function() {
    const projectId = this.dataset.projectId; // 或者从DOM节点里获取对应ID
    axios.delete(`/api/projects/${projectId}`)
      .then(() => {
        // 请求成功后的逻辑,比如刷新项目列表
        window.location.reload();
      })
      .catch(err => {
        console.error('删除失败:', err);
      });
  });
});

如果你的URL里漏了项目ID,或者路径写错了(比如后端是/projects/:id但前端写成了/project/:id),直接就会返回404。

2. 确认后端是否正确配置了Delete路由

很多后端框架(比如Express、Spring Boot)对请求方式是严格校验的。比如后端如果只写了GET请求的/projects/:id接口,没配置对应的DELETE路由,那前端发Delete请求肯定会404。你要检查:

  • 后端是否注册了DELETE /projects/:id(或者你对应的接口路径)的路由
  • 路由里的参数名和前端传递的是否一致(比如后端是:projectId还是:id)

3. 排查是否有中间件或权限拦截导致的404

有些后端的中间件(比如权限验证、日志中间件)如果配置错误,可能会把合法的Delete请求当成无效请求返回404(虽然这种情况更多是403,但也不能完全排除)。另外还要确认跨域(CORS)配置是否允许DELETE方法,如果CORS没开放DELETE请求,也可能导致请求失败(不过通常会返回跨域错误,但也可以排查一下)。

4. 直接测试后端接口

最快的排查方法是用Postman或者curl直接发送Delete请求到后端,比如:

curl -X DELETE http://你的后端地址/api/projects/123

把123换成你拿到的有效项目ID,如果这个请求也返回404,那问题肯定在后端路由;如果请求成功,那就是前端的请求构造有问题。

如果能补全你前端删除按钮的完整点击事件代码,我还能帮你更精准地定位问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:13:58