node.jsを使用してURLパスを書き換えることはできますか?(私もExpress 3.0を使用しています)
私はこのようなことを試しました:
req.url = 'foo';
しかし、URLは同じままです
もちろん、ミドルウェア関数を追加して変更するだけです。例えば:
app.use(function(req, res, next) {
if (req.url.slice(-1) === '/') {
req.url = req.url.slice(0, -1);
}
next();
});
この関数は、すべての着信要求URLから末尾のスラッシュを削除します。これを機能させるには、を呼び出す前に配置する必要があることに注意してくださいapp.use(app.router)
。
更新することもお勧めし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
req(NodeJsのIncomingMessage)のいくつかのプロパティをオーバーライドする必要があります。
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;
}