【问题标题】:Node js routes order messed upNode js路由顺序搞砸了
【发布时间】:2020-05-24 05:12:00
【问题描述】:

我有 2 个动态创建的节点 js 路由。

路线 1 app.get(/search-user/:firstname)

路线 2 app.get(/search-user/:lastname)

名字和姓氏的值在提交时来自不同的表单。

我面临的问题是,如果我的路由按照上面显示的顺序,那么路由 1 的路由有效,但对 Route 2 的请求被重定向到 Route 1 并产生不良结果。当我更改订单时,情况正好相反。似乎无论放置路线的顺序如何,只有第一个最终起作用。

我阅读了有关路由和执行顺序的文档。但是,它没有提到 2 个不同的 get 路线之间的顺序。

感谢任何帮助。我想让两条路线都可以正常工作,而不管 thr 顺序。

谢谢, 尼克

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    在你在路由中使用的变量中,:firstname:lastname 只是一个占位符,在这里它们对于 express 都是相同的。

    如果您提出 localhost:3000/search-user/nicklocalhost:3000/search-user/NicksLastName 之类的请求,则无法使用快速路由到区分,哪个是什么?因此,总是会匹配第一个路由(它不会被重定向)

    因此,您应该使用更具体的内容,例如 路线 1 app.get(/search-user/firstname/:firstname) 和路线 2 app.get(/search-user/lastname/:lastname)

    【讨论】:

    • 非常酷。效果很好。感谢你的协助。我本来希望文档在某处提到这一点。
    【解决方案2】:

    也许您不需要制作 2 条单独的路线。 您可以在 URL 中传递查询字符串参数,您可以通过以下方式访问它。

    URL= xyz.com/?firstName=anything&lastName=12312313
    URL= xyz.com/?firstName=anything
    URL= xyz.com/?lastName=12312313
    
    var id = req.query.id;
    
    **OR**
    
    var url = require('url');
    var url_parts = url.parse(request.url, true);
    var query = url_parts.query;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-09
      • 2015-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多