ミドルウェアはクライアントからのリクエストに対応するコードの一部である(そう私は、意図的に「コードの一部」と言って非常に一般化していた)。 それは異なる2つの方法で実装できる。ほとんどのケースでクラスベースのバージョンが優先されていても、適切な署名を持つデリゲートが必要である。クライアントからリクエストが到着したときに、リクエストを検査し、クライアントに返されるレスポンスを変更することができる。もしそれを望まない場合、それ自身がクライアントに送信するレスポンスを生成することもできる。 ミドルウェアはパイプラインにまとめられ、パイプラインに追加された順番で、ミドルウェアからミドルウェアに渡され、ミドルウェアのいずれかがレスポンスを生成する方法を知っていて、決定するまでそれが続く。その後、クライアントに返す途中でミドルウェアによって変更される機能を持ち、検査されるパイプラインを通じてレスポンス