路由概念理解
Routing conceptual understanding
我正在创建一个 Node.js api,我在理解路由器中间件时遇到了一些困难。
这是我的中间件,它会在您点击 api 时运行。
app.use("/", index);
app.use("/menu", menu);
索引-->index.js;
菜单-->menu.js
现在,index.js 有一个注册和登录路由器,都使用 POST。 menu.js
中没有这个
index.js
router.post("/signup", function(req,res){
router.post("/signin", function(req,res){
问题如下:
当我的 URI 位于 /menu 时,调用中间件 #2 后呈现正确的页面
当我点击 signup/signin 按钮时,它会在 /signin 或 发送一个 AJAX post 请求/signup,无论如何。
据我所知,第 2 点不应该起作用,因为 ajax post 请求将转到 /menu/signup,为此有 NO 处理程序。
然而,为 index.js 中的 POST 请求指定的处理程序执行,并且用户能够签署 in/up 即使在菜单页面上( URL: /menu) 在调用 /menu 中间件后
我很难理解为什么会这样。
任何帮助都会很好,谢谢。
我会post这个作为答案,因为我认为它解决了你的问题。
如果您从没有前导 /
(例如 signup
)的网页进行 Ajax 调用,则浏览器会将其解释为相对页面,这意味着如果页面 URL 是 http://localhost/menu
,您请求 ajax 调用 signup
,然后浏览器将请求 url 调用 http://localhost/menu/signup
。
但是,如果您在 ajax 请求前加上 /
并请求 /signup
,那么这是域相关的,因此浏览器将添加域并请求 http://locahost/signup
.不会使用当前页面的路径。您几乎总是希望使用前导 /
,因为无论您在哪个页面,这都会给您一个一致的 URL 请求。
我正在创建一个 Node.js api,我在理解路由器中间件时遇到了一些困难。 这是我的中间件,它会在您点击 api 时运行。
app.use("/", index);
app.use("/menu", menu);
索引-->index.js;
菜单-->menu.js
现在,index.js 有一个注册和登录路由器,都使用 POST。 menu.js
中没有这个
index.js
router.post("/signup", function(req,res){
router.post("/signin", function(req,res){
问题如下:
然而,为 index.js 中的 POST 请求指定的处理程序执行,并且用户能够签署 in/up 即使在菜单页面上( URL: /menu) 在调用 /menu 中间件后
我很难理解为什么会这样。
任何帮助都会很好,谢谢。
我会post这个作为答案,因为我认为它解决了你的问题。
如果您从没有前导 /
(例如 signup
)的网页进行 Ajax 调用,则浏览器会将其解释为相对页面,这意味着如果页面 URL 是 http://localhost/menu
,您请求 ajax 调用 signup
,然后浏览器将请求 url 调用 http://localhost/menu/signup
。
但是,如果您在 ajax 请求前加上 /
并请求 /signup
,那么这是域相关的,因此浏览器将添加域并请求 http://locahost/signup
.不会使用当前页面的路径。您几乎总是希望使用前导 /
,因为无论您在哪个页面,这都会给您一个一致的 URL 请求。