我有2个动态创建的节点js路由。
路线1 app.get(/ search-user /:firstname)
路线2 app.get(/ search-user /:lastname)
提交名字和姓氏的值来自不同的形式。
我面临的问题是,如果我的路由按照上面显示的顺序进行,则路由1的路由有效,但对路由2的请求被重定向到路由1并产生了不良结果。当我更改订单时,情况恰恰相反。看来,无论以哪种顺序放置路线,只有第一个都可以使用。
我阅读了有关路由和执行顺序的文档。但是,没有地方提到2条不同的get路线之间的顺序。
感谢您的帮助。我想使这两个路由都起作用,而与thr顺序无关。
谢谢, 尼克
答案 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;