2012-08-12 5 views
6

Flaskのbefore_request()および/またはafter_request()とWSGIミドルウェアの使用の違いはまったく分かりません。フラスコ:wsgi-middleware vs before_とafter_request()

は、私はこのような非常に愚かな何かをしたいと言う:

  • すべてのリクエストボディは、単語「ベーコン」をスキャンすると、「卵」に置き換えること。
  • 今要求(URLマッピングに応じて)フラスコビューに当たる、ビュー機能が応答
  • を作成し、すべてのレスポンスボディは、「卵」のためにスキャンされ、「ベーコン」

うに置き換える必要があります私はWSGIミドルウェアまたはFlask関数を使用しますか?非常に堅牢なミドルウェアスイートを備えたdjangoから来て、違いは私には分かりません。

ありがとうございます。 berni

答えて

8

実際、Djangoでの選択はまったく同じです。 DjangoはWSGI上に構築されているため、WSGIミドルウェアやDjangoミドルウェアをDjangoに理論的に記述することもできます。 DjangoコミュニティがWSGIミドルウェアから開発者を遠ざけるため、混乱しない理由があります。 1つの理由は、Djangoがmod_pythonとWSGIで同等に機能するように設計されているためです。 Djangoミドルウェアを使用することにより、ミドルウェアは両方のシステムで動作します(this post by James Bennett参照)。

WSGIミドルウェアを作成する利点の1つは、複数のフレームワークで使用できるという点です。たとえば、Beakerは、任意のWSGIフレームワークで使用できるセッションおよびキャッシングWSGIミドルウェアです。もしそれがFlaskに書かれていれば、Pyramidの開発者はそれを使うことができませんでした。ライブラリの保守担当者は、ライブラリが複数のフレームワークで動作することを特に確認したので、WSGIライブラリとして書きました。

  1. あなたは自分のアプリケーションに固有の何かをするミドルウェアを作成する場合は、あなたのフレームワークのミドルウェアを使用します。

    基本的に、これは私が私の決断を下すだろうかです。

  2. ミドルウェアがいくつかのアプリケーションで有用であり、他の人に役立つと思われる場合は、フレームワークのミドルウェア(Flaskが実際に「拡張機能」と呼ぶもの)を使用してください。例としてFlask-SQLAlchemyを参照してください。
  3. ミドルウェアに本当に興味を持ち、助けてくれる人がいる場合は、他のフレームワークで使用できるようにWSGIミドルウェアライブラリに変換することを検討してください。
+0

素晴らしい回答 - ありがとう! – bmaeser

関連する問題