Node JS路由顺序混乱

时间:2020-05-24 05:12:00

标签: node.js express

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

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

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

提交名字和姓氏的值来自不同的形式。

我面临的问题是,如果我的路由按照上面显示的顺序进行,则路由1的路由有效,但对路由2的请求被重定向到路由1并产生了不良结果。当我更改订单时,情况恰恰相反。看来,无论以哪种顺序放置路线,只有第一个都可以使用。

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

感谢您的帮助。我想使这两个路由都起作用,而与thr顺序无关。

谢谢, 尼克

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

也许您不需要进行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;