路由概念理解

时间:2017-02-26 14:10:01

标签: node.js routing middleware

我正在创建一个Node.js api,我在理解路由器中间件方面遇到了一些困难。 这是我点击api时运行的中间件。

app.use("/", index);
app.use("/menu", menu);

索引 - > index.js; menu - > menu.js
现在,index.js有一个注册和登录路由器,都使用POST。 这在menu.js中不存在

index.js

router.post("/signup", function(req,res){
router.post("/signin", function(req,res){

问题如下:

  • 当我的URI位于/ menu时,调用中间件#2后会呈现正确的页面
  • 当我点击注册/注册按钮时,它会在 / signin / signup 发送一个AJAX帖子请求,无论情况如何。
  • 根据我的理解,第2点不应该有效,因为ajax post请求将转到 / menu / signup ,其中有 NO 处理程序。 /> 然而,在 index.js 中为POST请求指定的处理程序执行,并且即使在调用/菜单中间件后在菜单页面(URL:/ menu)上,用户也能够登录/注销
    我很难理解为什么会发生这种情况。
    任何帮助都会很棒,谢谢。

  • 1 个答案:

    答案 0 :(得分:1)

    我发布这个作为答案,因为我认为它解决了你的问题。

    如果你从一个没有前导/的网页上进行Ajax调用,例如signup,那么浏览器将其解释为页面相对,这意味着页面URL是{{1并且您请求http://localhost/menu的ajax调用,然后浏览器将请求signup的网址。

    但是,如果您使用http://localhost/menu/signup和请求/为ajax请求添加前缀,那么这是域相关的,因此浏览器将添加域并请求/signup。不会使用当前页面的路径。您几乎总是希望使用前导http://locahost/signup,因为无论您在哪个页面,这都会为您提供一致的URL请求。