Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Request flask:wsgi中间件vs before_u和after_u请求()_Request_Response_Flask_Wsgi_Middleware - Fatal编程技术网

Request flask:wsgi中间件vs before_u和after_u请求()

Request flask:wsgi中间件vs before_u和after_u请求(),request,response,flask,wsgi,middleware,Request,Response,Flask,Wsgi,Middleware,我发现使用Flask的在请求之前()和/或在请求之后()与使用WSGI中间件的区别到底是什么,这让我很困惑 假设我想做一些非常愚蠢的事情,比如: 每个请求正文都应扫描“培根”一词,并用“鸡蛋”替换 现在请求点击flask视图(根据url映射),视图函数创建响应 每个响应体都应该扫描“鸡蛋”并替换为“培根” 我会使用WSGI中间件还是Flask函数?来自django,有一个非常健壮的中间件套件,我不清楚两者之间的区别 提前谢谢。 伯尼事实上,在Django,你有完全相同的选择。Django在某

我发现使用Flask的
在请求之前()和/或
在请求之后()与使用WSGI中间件的区别到底是什么,这让我很困惑

假设我想做一些非常愚蠢的事情,比如:

  • 每个请求正文都应扫描“培根”一词,并用“鸡蛋”替换
  • 现在请求点击flask视图(根据url映射),视图函数创建响应
  • 每个响应体都应该扫描“鸡蛋”并替换为“培根”
我会使用WSGI中间件还是Flask函数?来自django,有一个非常健壮的中间件套件,我不清楚两者之间的区别

提前谢谢。
伯尼

事实上,在Django,你有完全相同的选择。Django在某种程度上是建立在WSGI之上的,因此理论上您也可以在Django中编写WSGI中间件或Django中间件。您之所以不感到困惑,是因为Django社区通常会引导开发人员远离WSGI中间件。一个原因是Django被设计为在和WSGI上同等工作。通过使用Django中间件,您的中间件可以在两个系统上工作(请参阅)

创建WSGI中间件的一个优点是可以在多个框架中使用。例如,可以在任何WSGI框架中使用的会话和缓存WSGI中间件。如果它是专门在Flask中编写的,那么金字塔开发人员就不能使用它。该库的维护人员特别确保该库可以在多个框架中工作,因此他将其作为WSGI库编写

基本上,我会这样做决定:

  • 如果您只是在编写一个中间件来执行特定于您的应用程序的某些操作,请使用框架的中间件
  • 如果您认为您的中间件在您的一些应用程序中有用,并且可能对其他人有用,那么仍然使用您框架的中间件(Flask通常称之为“扩展”)。请看一个例子
  • 如果人们真的对您的中间件感兴趣,并且愿意提供帮助,请考虑将其转换为WSGI中间件库,以便可以在其他框架中使用