2016-08-25 6 views
1

私のウェブサイト上のリクエスト(イメージ、フォント、CSS、jsなど)のすべてのデータをキャプチャして、ファイルの詳細、特にファイル名およびファイルサイズ。私はほとんど同じ質問/ソリューションを発見した:node/expressですべてのhttpリクエストを取得する

Node.js : How to do something on all HTTP requests in Express?

しかし、解決策は、Express V4で廃止されるように見えます。これを行う簡単な解決法はありますか?別のアプローチとして、私は運と、以下のソリューションを試してみました:私は私のサイトでこのデータを表示するために探していますので、

var express = require("express"); 
var path = require("path"); 
var port = process.env.PORT || 3000; 

var app = express(); 
var publicPath = path.resolve(__dirname, "public"); 

app.use(express.static(publicPath)); 

app.get("/", function(req, res){ 
    // I want to listen to all requests coming from index.html 
    res.send("index.html"); 
}); 

app.all("*", function(){ 
    // can't get requests 
}) 

app.listen(port, function(){ 
    console.log(`server listening on port ${port}`); 
}); 

はまた、私はフィドラー/チャールズからこれを実行するために見ているわけではありません。

+0

ログ要求パスと 'Content-Length'ヘッダは十分ですか? – robertklep

+0

こんにちは@robertklep、おそらく、私はこの分野に精通していないので、十分なはずだと思うファイル名とkweightをつかむことができます。 – user3612986

+0

その場合、[morganの 'tiny' logger](https://github.com/expressjs/morgan#tiny)を使うだけで十分です。 – robertklep

答えて

1

便通ルートは、注文を前提としています。あなたの質問にリンクした答えは、ミドルウェアが定義されており、他のすべてのルートのの前にを使用しています。

第2に、ワイルドカードルートではなくミドルウェアを必要とするものを実装しようとしています。あなたの質問にあなたが提供したリンクのパターンは、そのdocsに従って推奨されなくなりました。

app.use(function (req, res, next) { 
    // do something with the request 
    req.foo = 'testing' 
    next(); // MUST call this or the routes will not be hit 
}); 

app.get('/', function(req, res){ 
    if (req.foo === 'testing') { 
     console.log('works'); 
    } 

    res.send("index.html"); 
}); 
関連する問題