Flask フレームワークのデコレータとミドルウェアの概念を理解するには、特定のコード例が必要です。
Flask はシンプルで簡単です。 Python Web を使用する このフレームワークは、デコレータとミドルウェアの概念を使用して、より柔軟な機能拡張とリクエストを処理する機能を提供します。この記事では、Flask フレームワークのデコレータとミドルウェアを詳しく紹介し、具体的なコード例を通して説明します。
デコレーターは、元の関数定義を変更せずに関数に関数を追加できる Python 言語の特別な構文です。 Flask フレームワークでは、ルートとミドルウェアを定義するためにデコレータがよく使用されます。
Flask フレームワークでは、ルート デコレーターは URL パスを特定の関数にバインドするために使用されます。ユーザーが URL パスにアクセスすると、フレームワークは対応する関数を自動的に呼び出します. 処理用の関数です。
次は簡単な例です:
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello Flask!' if __name__ == '__main__': app.run()
この例では、@app.route('/')
デコレータを インデックス#に使用します。 ## 関数はルート パス
/ にバインドされています。ユーザーがルート パスにアクセスすると、Flask フレームワークは自動的に
index 関数を呼び出し、文字列
'Hello Flask!' を返します。
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello Flask!' @app.before_request def before_request(): print('Before request') @app.after_request def after_request(response): print('After request') return response if __name__ == '__main__': app.run()
@app.before_request デコレータと
@app.after_requestDecorator を使用します。リクエストの到着およびレスポンスの返送プロセス中の一連のログ。
before_request 関数はリクエストを処理する前に呼び出され、
after_request 関数はリクエストを処理して応答を取得した後に呼び出されます。
__call__ メソッドを実装する必要があります。このメソッドは 2 つのパラメータ
request と
response を受け取ります。これらはそれぞれリクエスト オブジェクトとレスポンス オブジェクトを表します。
__call__ メソッドでこれら 2 つのオブジェクトを前処理および後処理できます。
from flask import Flask, request, Response app = Flask(__name__) class LogMiddleware: def __init__(self, app): self.app = app def __call__(self, request): self.before_request(request) response = self.app(request) self.after_request(request, response) return response def before_request(self, request): print('Before request') def after_request(self, request, response): print('After request') @app.route('/') def index(): return 'Hello Flask!' if __name__ == '__main__': app.wsgi_app = LogMiddleware(app.wsgi_app) app.run()
LogMiddleware という名前のカスタム ミドルウェア クラスを定義します。このクラスは、アプリケーション オブジェクトを表す
app パラメーターを受け取り、要求の到着と応答の戻りのプロセス中に呼び出される
__call__ メソッドを実装します。
__call__ メソッドで
before_request メソッドと
after_request メソッドを呼び出しました。これら 2 つのメソッドは、リクエストが到着し、レスポンスが返されるときに使用されます。それぞれが返されます。これら 2 つのメソッドでリクエストとレスポンスを処理できます。
LogMiddleware ミドルウェア クラスをアプリケーション オブジェクトの
wsgi_app 属性に適用して、リクエストとレスポンスの処理を実装しました。
以上がFlask フレームワークのデコレーターとミドルウェアの概念を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。