Angular请求Node.js API返回404错误但Postman调用正常问题求助
问题原因
- 核心是请求方法不匹配+路由挂载顺序错误两个问题:
- 路由配置里你只给
/publicationData注册了POST请求的处理逻辑,但是Angular的getPublication方法里发的是GET请求,服务端没注册GET方法自然返回404 - 你在
app.js里把app.use('/articles',articlesrouter);放在了app.listen(3000)之后,Express的路由注册必须在服务启动之前完成,放在启动之后的路由不会生效 - 你说Postman能请求成功,是因为你Postman里发的是POST请求,所以才会正常返回结果
- 路由配置里你只给
修复方案
第一步:修正路由注册顺序
打开app.js,把app.use('/articles',articlesrouter); 移动到app.listen(3000)之前,调整后代码片段如下:
// 原有其他中间件配置不变 app.use(bodyParser.json()); // 先注册路由 app.use('/articles',articlesrouter); // 最后启动服务 var server = app.listen(3000,()=>{ console.log("server is running on port 3000"); }); server.timeout = 600000; module.exports.handler = serverless(app);
第二步:匹配请求方法
二选一即可:
方案1:给路由增加GET方法支持
修改发布内容路由配置文件,给/publicationData同时注册GET和POST方法:
articlesrouter.route('/publicationData') .get(articlescontroller.publicationData) .post(articlescontroller.publicationData);
方案2:把Angular的请求改成POST
修改app-service.ts里的getPublication方法:
getPublication(){ let url = "http://localhost:3000/articles/publicationData"; // 把get改成post,第二个参数传空对象即可 return this.http.post(url, {}); }
完成以上修改后重启Node服务,重新编译Angular项目即可正常请求。
内容的提问来源于stack exchange,提问作者swati goel
相关产品推荐
相关产品推荐

