2016-08-24 9 views
0

私はこのようなパブリックフォルダ内の静的ファイルを提供していますノードのサーバーを、持っている:インターセプト要求

var app = express(); 
app.listen(port); 
app.use(compression()); 
app.use(express.static(__dirname + '/PUBLIC')); 

JSONファイルがあり、つまりimportant.jsonのは言わせて/ PUBLICフォルダにあります。これは静的ファイルとして提供されています

ここでは、この/PUBLIC/important.jsonのリクエストを傍受して、ランダムにjson構造をプログラムで返すことができます。以下の

なしに動作しません:

app.get('/PUBLIC/important.json', function(req, res) { 
    console.log("caught1!") 
}); 

app.get(__dirname + '/PUBLIC/important.json', function(req, res) { 
    console.log("caught2!") 
}); 

app.get('important.json', function(req, res) { 
    console.log("caught3!") 
}); 

がどのように私はそのpartically静的ファイルに対する要求を傍受することができますか?

+0

あなたが一般から隠そうとしていることはimportant.jsonですか?そうであれば、パブリックフォルダに入れないでください。どんなに頑張っても、ミドルウェアをバイパスする方法が常にあり、ファイルは最終的に提供されます。 (まず、私の心には、 "important.json"に正規化するUnicode文字列があります) –

+0

いいえ、それは秘密のファイルではありません。以前はほとんど変わっていない静的なjsonになっていましたが、要件の変更によってjsonデータが部分的に動的になりたいので、私はそれを傍受しようとしていて、その要求についてプログラム的に何かします。 – mkto

答えて

3

express.staticミドルウェアは、next()を使用して次のミドルウェアを呼び出さないため、定義の順序が重要です。あなた自身のミドルウェアの前に定義しなければなりません。express.staticを使用してください。

app.get('/PUBLIC/important.json', (req, res, next) => { 
    console.log('caught'); 
    next(); 
}); 
app.use(express.static(__dirname + '/PUBLIC')); 
+0

これは機能しました。ありがとう。 – mkto

0

スタックについてもう少し教えてください。

nginx/apacheを使用してnodejsサーバーへのトラフィックをproxy_passしていますか?

app.get('/', function (req, res) { 
    res.send('Hello World!'); 
}); 

とURIパラメータを削除することによってそれにアクセスしよう:

あなただけであなたのアプリケーションを実行しています

はのは、あなたのアプリケーションでこの単純なルートを追加してみましょう「ノードはapp.js」? 「Hello world」が表示されますか?

トラフィックは実際にノードアプリケーションによって処理されていることを確認したいだけです。

あなたの実際のリクエストに対して、あなたのルート定義が動作するはずです。

+0

こんにちはの世界は表示されません、PUBLICフォルダのインデックスページはいつものように表示されます。 – mkto

関連する問題