快速路由提供angularjs内容但不提供api

时间:2018-05-14 19:02:02

标签: angularjs node.js angular-ui-router

我使用nodejs / express作为我的Web应用程序的服务器端。

另一位不再与我合作的开发人员将angularjs dist bundle与服务器应用程序合并,以便运行" node index.js"它将同时为角度前端内容和服务器端api提供服务。这是为了改善缓慢负荷。

由于使nodejs后端服务于../dist文件夹前端,我有一个问题,我试图解决路由问题。

如下所示,我目前已注释掉所有路线。

当这被注释掉时,我可以点击所有api端点,但它不会提供来自../dist文件夹的angularjs内容。

如果没有注释掉所有路线,它会提升我的角度内容但无法到达我的任何api端点。所有对api端点的调用返回200但从未达到api端点。

enter image description here

1 个答案:

答案 0 :(得分:0)

订单在定义路线时很重要。如果你的第一个条目是一个全能,那么它将真正捕获所有内容,甚至是/api的请求。所以把你的全部作为最后一个条目:

app.get("/api", function(req,res) {
  res.json({
    message: "Hello World!"
  });
});

app.get("*", function(req,res) {
  res.sendFile(__dirname + "/dist/index.html");
});

明确宣布您的SPA路线也是明智的,即使您已经拥有一个全能:

app.get("/", function(req,res) {
  res.sendFile(__dirname + "/dist/index.html");
});

app.get("/api", function(req,res) {
  res.json({
    message: "Hello World!"
  });
});
app.get("*", function(req,res) {
  res.sendFile(__dirname + "/dist/index.html");
});