扩展,提供了一个简单的方法来添加虔诚的快捷方式到您的路线。
flask-shortcut的Python项目详细描述
项目描述
提供了一个安全的方式来添加快捷方式 烧瓶应用程序中的路径。在
主要受益者是需要定期测试的微服务 与他们的客户合作。如果你需要维护工作沟通和 基本的整合在一个足够复杂的生态系统中,客户不能 自由选择他们的请求是如何形成的从能够 接收可预测的响应。通过跳过 实现了微服务,它所经历的错误和微小的变化 随着时间的推移,测试基本API兼容性变得更加容易管理。在
什么是捷径?在
在此包的上下文中,快捷方式是一对条件-响应。 响应是anything that an view function can return,并且 条件取决于三种可能的映射上下文之一。在
在第一个上下文中,只有响应作为快捷方式传递,并且 假设条件始终为真,有效地替换了 总是返回给定的响应。以视图^{tt1}显示$ 在“用法”部分。在
在第二个上下文中,传递一个将字符串映射到响应的字典 作为捷径。字符串需要反序列化为json,并且 第一个可以作为子结构完全匹配到请求主体中的 将看到其条件已满足,并返回其关联的响应。 如果它们都不是有效的子匹配项,则原始视图函数将运行。 在usage部分显示了视图bar。在
在第三个上下文中,单个函数或函数列表都是 作为快捷方式传递。函数可以运行任何代码 一个接一个地执行,只要它们返回None,这意味着 他们的条件没有得到满足。一旦其中一个回来 一些不同的东西,它被作为回应传递。如果他们都回来了 None,执行原始视图函数。与风景一起展示 baz在usage部分。在
使用
可以使用单独向视图函数添加快捷方式 或者在所有的路线都被定义好后,一下子就完成了。双向的 在功能上是等价的。在
应用快捷方式
,带装饰符:
fromflaskimportFlaskfromflask_shortcutimportShortcutapp=Flask(__name__)short=Shortcut(app)@app.route('/foo',methods=['GET'])@short.cut(('short_foo',200))deffoo():return'foo'@app.route('/bar',methods=['POST'])@short.cut({'{"name": "TestUser"}':('short_bar',200),'{"name": "UserTest"}':('longer_bar',200),})defbar():return'bar'@app.route('/baz',methods=['POST'])@short.cut(lambda:("json_baz",200)if"json"inrequest.mimetypeelseNone)defbaz():return'baz'
,带有线电话
^{pr2}$它的样子
为了展示快捷方式是如何工作的,下面是结果 从上面的例子中对服务器发送的两个请求 如果它是用FLASK_ENV=test flask run运行的:
>>>fromrequestimportget,post>>>get('http://127.0.0.1:5000/foo').text'short_foo'# the only response this route will give>>>post('http://127.0.0.1:5000/bar',json={"name":"me"}).text'bar'# no shortcut match -> the original logic was executed>>>post('http://127.0.0.1:5000/bar',json={"name":"TestUser"}).text'short_bar'# shortcut match>>>post('http://127.0.0.1:5000/bar',json={"name":"UserTest","job":None}).text'longer_bar'# shortcut only needs to be contained for a match>>>post('http://127.0.0.1:5000/baz').text'baz'# no shortcut match -> the function returned None>>>post('http://127.0.0.1:5000/baz',json={"name":"me"}).text'json_baz'# shortcut matched -> the function returned a valid response
这个包的一个重点是生产部署将保留 尽可能不知道捷径的存在。而 快捷方式对象仍然被创建,它只委托视图功能 而且没有任何快捷方式代码有可能被运行或出现在中。在
配置
只有当FLASK_ENV设置为某个值时,才会应用快捷方式 与默认设置不同,production。你可以扩展这个列表 通过SHORTCUT_EXCLUSIONSconfig设置,或者将其添加到 在创建任何快捷方式对象之前,或者最好通过 正在设置整个配置with a file。在
它的可能值是您希望阻止其他环境的所有环境 而不是用逗号分隔的production。例如staging,masterwill 阻止环境production、staging和master接收 捷径。在
- 项目
标签: