2

我需要用 Node 重写这个 URL:

/single.php?articleID=123

对此:

/article/123

这是因为与我合作的一家公司已经打印出带有旧软件 URL 的二维码。现在他们的软件已经用 Node 重写了,QR 码不再起作用了。如何使用 Node 支持这个旧 URL?我尝试为它设置路线:

app.get('/single.php?articleID=:id', log.logRequest, auth.checkAuth, function (request, reponse) {
  response.send(request.params.id);
});

但它只是回应这个:

Cannot GET /single.php?articleID=12

有任何想法吗?谢谢。

4

1 回答 1

2

快速路线仅用于路径,但您应该single.php能够articleIDreq.query.

app.get('/single.php', log.logRequest, auth.checkAuth, function (request, reponse) {
    response.send(request.query.articleID);
});

如果你想要路由的查询参数,你可以为它创建一个自定义中间件:

function requireArticleID(req, res, next) {
    if ('articleID' in req.query) {
        next();
    } else {
        next('route');
    }
}

app.get('/single.php', requireArticleID, ..., function (request, reponse) {
    // ...
});

next('route')在应用程序路由下讨论。

于 2013-08-20T09:16:57.727 回答