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

Postman发送POST请求返回404状态码 可正常GET请求如何解决

问题原因及解决方案

核心问题:接口路径不匹配

你代码中定义的POST接口路径是/api/courses,但你大概率在Postman中发送POST请求时用了和GET一致的/api/users路径,两个路径不匹配自然返回404。
从你的代码路由定义就能明显看出命名不一致的问题:

  • GET获取课程列表的路由为app.get('/api/users', ...)
  • 新增课程的POST路由为app.post('/api/courses', ...)
    属于典型的手误写错了路由路径。

修复方案

方案1:统一路由路径(推荐)

把POST路由的路径改成和GET同组的/api/users,或者把所有课程相关的路由都统一改成/api/courses,保持业务命名一致:

// 示例:统一用/api/courses作为课程类接口的前缀,修改两个GET路由即可
app.get('/api/courses',(req,res)=>{
    res.send(courses);
});

app.get('/api/courses/:id',(req,res)=>{
    const course = courses.find(c=>c.id===Number(req.params.id));
    if(!course) return res.status(404).send("The course with requested ID is not found");
    res.send(course);
});

改完之后POST请求发http://你的服务地址:3000/api/courses即可正常访问。

方案2:Postman请求路径和现有代码保持一致

如果你不想修改现有代码,直接在Postman中把POST请求的路径改成代码里定义的/api/courses即可解决404问题。

其他注意事项

  • 发送POST请求时要确保请求头的Content-Type设为application/json,否则express.json()中间件无法解析请求体,会拿不到req.body.name的值
  • 404状态码的本质就是请求方法、请求路径和服务端定义的路由不匹配,遇到这类问题优先核对这两个参数
  • 你现有代码里的/api/users/:id路由如果没有匹配到资源,返回404之后没有终止函数执行,会继续执行后面的res.send(course)触发报错,建议加上return终止逻辑:
if(!course) return res.status(404).send("The course with requested ID is not found");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:06:03