Maison  >  Article  >  développement back-end  >  Comprendre les concepts de décorateurs et de middleware dans le framework Flask

Comprendre les concepts de décorateurs et de middleware dans le framework Flask

WBOY
WBOYoriginal
2023-09-27 22:21:06909parcourir

Comprendre les concepts de décorateurs et de middleware dans le framework Flask

Pour comprendre les concepts de décorateurs et de middleware dans le framework Flask, des exemples de code spécifiques sont nécessaires

Introduction

Flask est un framework Web Python simple et facile à utiliser qui adopte les concepts de décorateurs et de middleware pour fournir plus de flexibilité, des extensions de fonctionnalités et la possibilité de gérer les demandes. Cet article présentera en détail les décorateurs et les middlewares du framework Flask et les expliquera à travers des exemples de code spécifiques.

Concept de décorateur

Decorator est une syntaxe spéciale dans le langage Python qui peut ajouter des fonctions supplémentaires à une fonction sans modifier la définition de la fonction d'origine. Dans le framework Flask, les décorateurs sont souvent utilisés pour définir des routes et des middlewares.

Route Decorator

Dans le framework Flask, le décorateur de route est utilisé pour lier un chemin d'URL à une fonction spécifique Lorsque l'utilisateur accède au chemin d'URL, le framework appelle automatiquement la fonction correspondante pour le traitement.

Voici un exemple simple :

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello Flask!'

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

Dans cet exemple, nous utilisons le décorateur @app.route('/') pour lier la fonction index Set au chemin racine /. Lorsque l'utilisateur accède au chemin racine, le framework Flask appelle automatiquement la fonction index et renvoie la chaîne 'Hello Flask!'. @app.route('/')装饰器,将index函数绑定到了根路径/上。当用户访问根路径时,Flask框架会自动调用index函数并返回字符串'Hello Flask!'

中间件装饰器

中间件装饰器用于在请求到达和响应返回的过程中,给请求和响应增加额外的处理逻辑。在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_request装饰器,分别在请求到达和响应返回的过程中打印了一行日志。before_request函数在处理请求之前被调用,after_request函数在处理完请求并得到响应后被调用。

中间件概念

中间件是一种功能模块,它可以在请求到达和响应返回的过程中,对请求和响应进行处理。中间件可以用于实现一些通用的功能,例如身份验证、日志记录、异常处理等。

在Flask框架中,我们可以通过实现中间件类的方式来自定义中间件。一个中间件类需要实现__call__方法,这个方法会接收两个参数:requestresponse,分别表示请求对象和响应对象。我们可以在__call__方法中对这两个对象进行预处理和后处理。

下面是一个自定义中间件的示例:

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方法,这两个方法分别在请求到达和响应返回的时候被调用。我们可以在这两个方法中对请求和响应进行处理。

最后,我们将LogMiddleware中间件类应用到了应用对象的wsgi_app

Décorateur Middleware

Le décorateur Middleware est utilisé pour ajouter une logique de traitement supplémentaire aux demandes et aux réponses pendant le processus d'arrivée des demandes et de retour des réponses. Dans le framework Flask, les décorateurs middleware ajoutent généralement un décorateur au-dessus du décorateur de route pour pré-traiter et post-traiter les demandes et les réponses.

Voici un exemple simple : 🎜rrreee🎜Dans cet exemple, nous utilisons respectivement le décorateur @app.before_request et le décorateur @app.after_request. Le journal est imprimé pendant le processus d’arrivée de la demande et de retour de la réponse. La fonction before_request est appelée avant le traitement de la requête, et la fonction after_request est appelée après le traitement de la requête et l'obtention de la réponse. 🎜🎜Concept Middleware🎜🎜Le Middleware est un module fonctionnel qui peut traiter les demandes et les réponses pendant le processus d'arrivée des demandes et de retour des réponses. Le middleware peut être utilisé pour implémenter certaines fonctions courantes, telles que l'authentification, la journalisation, la gestion des exceptions, etc. 🎜🎜Dans le framework Flask, nous pouvons personnaliser le middleware en implémentant des classes middleware. Une classe middleware doit implémenter la méthode __call__. Cette méthode recevra deux paramètres : request et response, qui représentent l'objet de requête et la réponse. objet respectivement. Nous pouvons prétraiter et post-traiter ces deux objets dans la méthode __call__. 🎜🎜Voici un exemple de middleware personnalisé : 🎜rrreee🎜Dans cet exemple, nous définissons une classe de middleware personnalisée nommée LogMiddleware. Cette classe reçoit un paramètre app, représentant l'objet application, puis implémente la méthode __call__, qui est appelée lorsque la requête arrive et que la réponse est renvoyée. 🎜🎜Nous avons appelé la méthode before_request et la méthode after_request dans la méthode __call__. Ces deux méthodes sont appelées lorsque la requête arrive et que la réponse revient. respectivement. Nous pouvons traiter les demandes et les réponses selon ces deux méthodes. 🎜🎜Enfin, nous avons appliqué la classe middleware LogMiddleware à l'attribut wsgi_app de l'objet application pour implémenter le traitement des requêtes et des réponses. 🎜🎜Conclusion🎜🎜Grâce à l'introduction de cet article, nous avons appris les concepts et l'utilisation des décorateurs et des middlewares dans le framework Flask. Les décorateurs peuvent être utilisés pour définir des itinéraires et des middlewares pour gérer les demandes et ajouter des fonctionnalités supplémentaires. Le middleware peut traiter les demandes et les réponses pendant le processus d'arrivée des demandes et de retour des réponses, et est utilisé pour implémenter certaines fonctions courantes. J'espère que cet article vous aidera à comprendre les décorateurs et les middlewares du framework Flask. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn