フラスコクイックスタート(10) - ミドルウェア

発明者らは、実行中のapp.run()メソッドの場合、最終的な実行run_simple、最終的な実装アプリ()、即ち、の実装app.__call__方法。

ではapp.__call__内部、されないself.wsgi_app()、我々は、それ自体が何かをする前に、またはwsgi_app後に実行したいです。これは、ミドルウェア・アプリケーションです

from flask import Flask

app = Flask(__name__)
# 中间件类
class MyMiddleware:
    def __init__(self,wsgi_app):
        self.wsgi_app = wsgi_app
    def __call__(self, environ, start_response):
        print('我是开始之前')
        res = self.wsgi_app(environ, start_response)
        print('我是所有之后')
        return res

@app.route('/')
def index():
    print('我是请求')
    return 'ok'

@app.before_request
def before():
    print('我是请求之前')

@app.after_request
def after(response):
    print('我是请求之后')
    return response

if __name__ == '__main__':
    app.wsgi_app = MyMiddleware(app.wsgi_app) 
    app.run()

それでは、MyMiddlewareクラス使ってみましょう__init__()アプリを保存する前にwsgi_app方法を、次にMyMiddlewareのオブジェクトに変換します。

次に、新しいの実装は、app.wsgi_app()実行時間MyMiddlewareである__call__()前に、元のメソッドwsgi_appを呼び出しまたはメソッドの後には、あなたは操作のいずれかを行うことができます

おすすめ

転載: www.cnblogs.com/863652104kai/p/11687516.html