Javascript 我怎样才能使用;?参数=X";在NodeJS的路线上?

Javascript 我怎样才能使用;?参数=X";在NodeJS的路线上?,javascript,node.js,express,Javascript,Node.js,Express,在我的nodejs和“express”应用程序中,我有以下内容: app.get("/:page?", function (req, res) { var pg = req.params.page; 它对应于localhost:123或localhost:123/3 但是,我希望能够通过req.params.page,以相同的方式获取当前页面,但是url应该是localhost:123或localhost:123/?page=X 如何?您应该在不使用?的情况下定义路由,并且如果您在loca

在我的nodejs和“express”应用程序中,我有以下内容:

app.get("/:page?", function (req, res) {
  var pg = req.params.page;
它对应于
localhost:123
localhost:123/3

但是,我希望能够通过
req.params.page
以相同的方式获取当前页面,但是url应该是
localhost:123
localhost:123/?page=X


如何?

您应该在不使用
的情况下定义路由,并且如果您在
localhost:123/3上执行get操作,那么
req.query将使用
的值填充此
,我的第一个建议是,您不要使用
/:variable
定义端点。然后,这将匹配您创建的遵循该模式的任何管线。您应该改为使用类似于
/pages/:page
的内容来获取特定页面

然后,您应该使用Express中的URL参数功能来包含URL参数

按如下方式定义您的路线:

app.get("/pages/:page", function (req, res) {
    var pg = undefined;

    if (req.query.page) {
        pg = req.query.page;
    }
}
然后,您可以访问req.query.page中的页面(如果存在),并使用该值执行任何操作

例如,您可以使用
localhost/pages/123?page=3
提交请求


req.query.page
将等于3,
req.params.page
将等于123。

您希望使查询字符串成为路由的一部分;是这样吗?我很确定你不能这么做,但这是个好问题。这可能是最接近的副本:可能是更接近的副本:(“执行这些[route]匹配时不考虑查询字符串…”)