現在、ユーザーが各リクエストのヘッダーで認証トークンを渡す必要がある API を作成しています。これで、キャッチオールルートを作成できることがわかりました
app.get('/*', function(req,res){
});
しかし、またはなどの特定のルートを除外するようにするにはどうすればよいのでしょう/login
か/
?
除外したいルートの後にいつでもキャッチオールルートを配置できます(robertklepの回答を参照)。
しかし、ルートの順序を気にしたくない場合もあります。この場合、あなたはまだあなたが望むことをすることができます:
app.get('*', function(req, res, next) {
if (req.url === '/' || req.url === '/login') return next();
...
});
すべてのリクエストで資格情報または信頼性を検証する場合は、Express Routing 機能の "all" を使用する必要があります。次のように使用できます。
app.all('/api/*', function(req, res, next){
console.log('General Validations');
next();
});
ルーティングの前に配置できます。
この場合、パスとして「/api/」を使用したことに注意してください。必要に応じて「/」を使用できます。
ここで誰かを助けるのに遅すぎないことを願っています。
キャッチオール ルート ハンドラーを作成する別の方法は次のとおりです。
app.get('/login', function(req, res) {
//... login page
});
app.get('/', function(req, res) {
//...index page
});
app.get('/:pageCalled', function(req, res) {
console.log('retrieving page: ' + req.params.pageCalled);
//... mypage.html
});
これは robertklep の (受け入れられた) 回答とまったく同じように機能しますが、ユーザーが実際に要求した内容に関する詳細情報が得られます。これで、要求されているページを表すスラッグreq.params.pageCalled
ができ、複数の異なるページがある場合にユーザーを適切なページに誘導できます。
このアプローチで気をつけなければならない点 (thx @agmin) は/:pageCalled
、1 つのルートのみをキャッチするため、 など/
は取得されません。より多くのページの/route/1
ように追加のスラッグを使用/:pageCalled/:subPageCalled
します (thx @softcode)。