2017-02-23 5 views
0

Expressミドルウェアでは、要求、応答、次のの3つのパラメータを取る必要があります。 しかし、私は本からコピーしたコード内の2番目のミドルウェアでは、要求、応答のみを使用します。ここに理由は何ですか?次はオプションですか?Node.js Expressミドルウェア機能なし

var express = require("express"); 
var http = require("http"); 

var app = express(); 

app.use(function(request, response, next) { 
    console.log("In comes a " + request.method + " to " + request.url); 
    next(); 
}); 

app.use(function(request, response) { 
    response.writeHead(200, { "Content-Type": "text/plain" }); 
    response.end("Hello, world!"); 
}); 

http.createServer(app).listen(3000); 

答えて

2

express.jsには、4種類の基本ハンドラがあります。

  • 2 - reqは、解像度、次の
  • 4 - - ERR、REQ、解像度は、次の

あなたは2つの引数を持っている場合は、必ず割り当てます表現reqが、

  • 3をresはあなたが何を呼んでいても、それらにreqとres。これは、より明確で読みやすく分かりやすいコードを作成するために、エクスプレスコミュニティで広く使用されている呼び出し規約です。

  • 2

    next()あなたは次のミドルウェアや、この要求のための次のルートハンドラに継続するには、この要求のルーティングをしたいときに呼び出されます。特定の要求を調べるミドルウェアが複数あることが多いため、応答を送信せずにこの要求に対して通常のルーティングを続行したい場合は、処理が完了したときにnext()持続する。

    すでに応答を送信しており、ルーティングを続行したくない場合は、next()に電話をかけないでください。

    パラメータを宣言するかどうかは、nextです。それを呼び出す予定がない場合は、パラメータとして宣言する必要はありません(まだ渡されますが、使用しない場合は宣言する必要はありません)。

    関連する問題