在路由之前修改flask url

时间:2017-06-20 11:39:57

标签: python python-2.7 url flask

My Flask app的网址路由定义为

self.add_url_rule('/api/1/accounts/<id_>', view_func=self.accounts, methods=['GET'])

问题是应用程序向此应用程序发出查询之一添加了其他/在网址中 / api / 1 // accounts / id 。我无法控制进行此类查询的应用程序,因此我无法对其进行更改。

目前我已经添加了多个规则

来解决此问题
self.add_url_rule('/api/1/accounts/<id_>', view_func=self.accounts, methods=['GET'])
self.add_url_rule('/api/1//accounts/<id_>', view_func=self.accounts, methods=['GET'])

有很多这样的路线,这是一个丑陋的解决方法。在点击路由逻辑之前,是否有一种方法可以修改URL?

1 个答案:

答案 0 :(得分:4)

我通过拥有承载WSGI容器的HTTP服务器或堆栈之前的代理服务器,或者使用WSGI中间件,在路径到达Flask之前规范化路径。

后者很容易写:

ExecWait '"$R6\Uninstall.exe" _?=$R6' ;Do not copy the uninstaller to a temp file

您可能希望记录您正在应用此转换以及REMOTE_HOST和HTTP_USER_AGENT条目等诊断信息。就个人而言,我强制该特定应用程序尽快生成未损坏的URL。

查看您的WSGI服务器文档,了解如何添加额外的WSGI中间件组件。