実際のルーティングが行われる前に、特定のパラメーターが設定され、小さなコードを実行する場合に備えて、エクスプレスを使用してクエリ文字列を解析しようとしています。ユースケースは、使用されているリンクに関係なく、設定できる特定の値を取得することです。私はエクスプレス機能を使用して、next() を使用して次の可能なルールに物を渡します。
これまでのところ、私は試しました-すべての app.get/post-rule-block の一番上で:
app.get('[?&]something=([^&#]*)', function(req, res, next) {
var somethingID = req.params.something;
// Below line is just there to illustrate that it's working. Actual code will do something real, of course.
console.log("Something: "+somethingID);
next();
})
app.get('/', site.index);
また:
app.param('something', function(req, res, next) {
var somethingID = req.params.something;
console.log("Something: "+somethingID);
next();
})
app.get('/', site.index);
トリガーする対象の例:
URL: www.example.com/?something=10239
URL: www.example.com/superpage/?something=10239
URL: www.example.com/minisite/?anything=10&something=10239
残念ながら、私の解決策はどれも実際には機能せず、次の一致ルールがトリガーされるだけで、上記の小さな関数は実行されません。これをどのように行うことができるか、誰にも考えがありますか?
編集:私は、後で他のルーティングルール内で上記のパラメーターを使用していないため、param-example が機能していなかったことを理解しており、そのときにのみトリガーされます。
また、Express がクエリ文字列を無視し、通常はルーティングが既に行われた後に関数内で解析されることをロジックが暗示していることも理解しています。しかし、前述のように、これは「ルートに依存しない」必要があり、このアプリケーション内で処理される任意の URL で動作する必要があります。