扩展,提供了一个简单的方法来添加虔诚的快捷方式到您的路线。

flask-shortcut的Python项目详细描述


Logo

Main workflow statusCurrent pyPI versionDocumentation homePackage licenseSupported on python versionsAny color you want

项目描述

提供了一个安全的方式来添加快捷方式 烧瓶应用程序中的路径。在

主要受益者是需要定期测试的微服务 与他们的客户合作。如果你需要维护工作沟通和 基本的整合在一个足够复杂的生态系统中,客户不能 自由选择他们的请求是如何形成的从能够 接收可预测的响应。通过跳过 实现了微服务,它所经历的错误和微小的变化 随着时间的推移,测试基本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 阻止环境productionstagingmaster接收 捷径。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在一个问题被连续正确回答三次/并添加差异后,我如何将程序循环回开始   Java中未实例化的匿名类   java如何在Android中录制视频,只允许横向模式和最长时间录制时间   java从另一个活动发送实时消息   多线程java线程和互斥   java禁用Spring安全日志   JAVA伊奥。StreamCorruptedException:在与子级和父级ProcessBuilder通信时写入子级中的标准输出时,流头无效   使用Java(HttpURLConnection)对Restheart进行身份验证(对于Mongodb)   java如何解决Jenkins中的SAXParseException?   java为什么我需要mockito来测试Spring应用程序?   计算sin-cos和tan时缺乏精度(java)   java Hibernate。不同项目中相同一对一映射的不同行为   java图像滑块:如何使用JavaFX将图像放在另一个图像上   java Mockito在使用when时抛出NotAMockException   http Java servlet发送回响应