Angular路由网址是否必须与节点表达与后端“通话”的路由相同?

时间:2016-09-14 19:47:18

标签: angularjs express post routing

角: 我的路线中的网址是'/ auth / login',后端的路由是'/ login' - 这一切都有效,但我只是想知道为什么两个网址都不同 - 前端如何与后端对话? 或者它是否有效,因为两个url都有/ login(所以之前的任何内容 - 在这种情况下:/ auth无关紧要)? 谢谢。

....
auth.login = function(email, password) {
        return $http.post('/auth/login', user)
        .then(function(response){
            $rootScope.currentUser = response.data;
        })
  }
....

后端:

app.post('/auth/login', function (req, res, next) {  
   User.findOne({
    where: req.body
  })
  .then(function (user) {
      if (!user) {
      res.sendStatus(401);
    } else {
      req.session.userId = user.id;
      res.sendStatus(204);
    }
  })
  .catch(console.error)

});

1 个答案:

答案 0 :(得分:0)

它的工作原理是因为一旦加载了角度,对客户端URL的任何更改都不会导致浏览器发出服务器请求。浏览器对服务器的唯一请求是index.html +它使用的任何资源(js,css,images)。

有关其工作原理的更多信息,请参阅 Hashbang& $location guide

的HTML5模式部分

客户端+服务器API之间的链接仅在您从角度发出$http个请求时发生。对$http次请求,您要指定要请求的API端点的确切网址。

前端和后端/ API URL不需要有任何共同点。唯一需要注意的是,您用于$http请求的网址指向后端API的有效网址。

所有这一切的唯一例外是,如果您已经将应用编码为某种魔术,您可以使用当前的浏览器URL来决定要触及哪个API端点。这是一个非常罕见的情况,如果您的应用程序正在执行此类操作,您肯定会知道它(因为您必须自定义构建该功能!)

希望能为你清除它。