18

node.jsを使用してURLパスを書き換えることはできますか?(私もExpress 3.0を使用しています)

私はこのようなことを試しました:

req.url = 'foo';

しかし、URLは同じままです

4

3 に答える 3

44

もちろん、ミドルウェア関数を追加して変更するだけです。例えば:

app.use(function(req, res, next) {
  if (req.url.slice(-1) === '/') {
    req.url = req.url.slice(0, -1);
  }
  next();
});

この関数は、すべての着信要求URLから末尾のスラッシュを削除します。これを機能させるには、を呼び出す前に配置する必要があることに注意してくださいapp.use(app.router)

于 2012-11-19T00:26:02.840 に答える
2

更新することもお勧めしpathます。私の方法の提案:

app.use(function(req, res, next) {
    console.log("request", req.originalUrl);
    const removeOnRoutes = '/not-wanted-route-part';
    req.originalUrl = req.originalUrl.replace(removeOnRoutes,'');
    req.path = req.path.replace(removeOnRoutes,'');
    return next();
});

このよう/not-wanted-route-part/usersになります/users

于 2019-08-08T17:56:37.487 に答える
1

req(NodeJsのIncomingMessage)のいくつかのプロパティをオーバーライドする必要があります。

  • url
  • 探す
  • クエリ

2

function changeUrl(req, url) {
    const parsedUrl = new URL(url);
    req.url = url;
    req.originalUrl = url;
    req.path = parsedUrl.pathname;
    req.search = parsedUrl.search;
    req._parsedUrl = parsedUrl;
    const query = {};
    for(const entry of parsedUrl.searchParams) {
        query[entry[0]] = entry[1];
    }
    req.query = query;
}
于 2020-10-24T11:53:00.120 に答える