異なるルートにデータを渡す方法はいくつかあります。もちろん、最も正しい答えはクエリ文字列です。値が適切にencodeURIComponentおよびdecodeURIComponentであることを確認する必要があります。
app.get('/category', function(req, res) {
var string = encodeURIComponent('something that would break');
res.redirect('/?valid=' + string);
});
を使用して送信されたパラメーターを取得することにより、他のルートでそれを引っ掛けることができますreq.query
。
app.get('/', function(req, res) {
var passedVariable = req.query.valid;
// Do something with variable
});
より動的な方法として、url
core モジュールを使用してクエリ文字列を生成できます。
const url = require('url');
app.get('/category', function(req, res) {
res.redirect(url.format({
pathname:"/",
query: {
"a": 1,
"b": 2,
"valid":"your string here"
}
}));
});
したがって、すべてのreqクエリ文字列変数をリダイレクトしたい場合は、単純に行うことができます
res.redirect(url.format({
pathname:"/",
query:req.query,
});
});
また、Node >= 7.x を使用している場合は、querystring
コア モジュールも使用できます。
const querystring = require('querystring');
app.get('/category', function(req, res) {
const query = querystring.stringify({
"a": 1,
"b": 2,
"valid":"your string here"
});
res.redirect('/?' + query);
});
それを行う別の方法は、セッションで何かを設定することです。 ここで設定する方法を読むことができますが、変数を設定してアクセスするには、次のようにします。
app.get('/category', function(req, res) {
req.session.valid = true;
res.redirect('/');
});
そして後でリダイレクトの後...
app.get('/', function(req, res) {
var passedVariable = req.session.valid;
req.session.valid = null; // resets session variable
// Do something
});
Express の古い機能を使用するオプションもありますreq.flash
。新しいバージョンの Express でこれを行うには、別のライブラリを使用する必要があります。基本的に、次にページに移動したときに表示およびリセットされる変数を設定できます。ユーザーにエラーを表示するのに便利ですが、デフォルトでは削除されています。編集:この機能を追加するライブラリが見つかりました。
これで、Express アプリケーションで情報をやり取りする方法の一般的なアイデアが得られることを願っています。