当前位置: 首页 > 面试题库 >

flask路径模式匹配顺序

贾骏
2023-03-14
问题内容

我有以下路线:

  1. / /close
  2. / /
    如果我向发出请求 http://localhost:5000/example-poll-key/close,Flask将其匹配为模式2,将字符串“ close”分配给 <participant_key>URL参数。如何使 <poll_key>/close路线在 <participant_key>路线之前匹配?

问题答案:

我错过了match_compare_key

  1. 对于static端点:(True, -2, [(0, -6), (1, 200)])
  2. /<poll_key>/close:(True, -2, [(1, 100), (0, -5)])
  3. /<poll_key>/<participant_key>:(True, -2, [(1, 100), (1, 100)])

这意味着的static优先级高于其他优先级,并且close优先级高于<participant_key>

例:

from flask import Flask

app = Flask(__name__)
app.add_url_rule('/<poll_key>/close', 'close',
                 lambda **kwargs: 'close\t' + str(kwargs))
app.add_url_rule('/<poll_key>/<participant_key>', 'p_key',
                 lambda **kwargs: 'p_key\t' + str(kwargs))


client = app.test_client()

print client.get('/example-poll-key/close').data
print client.get('/example-poll-key/example-participant-key').data

输出:

close   {'poll_key': u'example-poll-key'}
p_key   {'participant_key': u'example-participant-key', 'poll_key': u'example-poll-key'}

看起来这是正确的行为。



 类似资料:
  • wiremock如何将URL路径模式与编码的URL精确匹配?是否需要使用已编码的URL保存映射?这是我试了几个小时,却没能成功的方法。 无线映射 我已经尝试过使用编码URL的不同变体,例如/Systems XYZ(ABC)/2016.10/aaa/bbb/api/ccc/customers/*甚至在映射中对(和)进行URL编码,但我的请求似乎不匹配 我试图针对wiremock/Systems XY

  • 这些配置允许你对许多与URL映射和路径匹配有关的设置进行定制。关于所有可用的配置选项,请参考PathMatchConfigurer类的API文档。 下面是采用MVC Java编程配置的一段代码: @Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter {

  • 本文向大家介绍Python3指定路径寻找符合匹配模式文件,包括了Python3指定路径寻找符合匹配模式文件的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python3指定路径寻找符合匹配模式文件。分享给大家供大家参考。具体实现方法如下: 这里给定一个搜索路径,需要在此目录中找出所有符合匹配模式的文件 希望本文所述对大家的Python3程序设计有所帮助。

  • 一、模式匹配 Scala 支持模式匹配机制,可以代替 swith 语句、执行类型检查、以及支持析构表达式等。 1.1 更好的swith Scala 不支持 swith,可以使用模式匹配 match...case 语法代替。但是 match 语句与 Java 中的 switch 有以下三点不同: Scala 中的 case 语句支持任何类型;而 Java 中 case 语句仅支持整型、枚举和字符串常

  • 主机权限和 内容脚本匹配 是基于匹配模式定义的一组 URL。匹配模式本质上是一个以允许的 schema(http,https,file 或ftp 开头)的URL,并且可以包含 “*” 字符。特殊模式 < all_urls > 匹配以允许的 schema 开头的任何 URL。 每个模式包含 3 个部分: schema - 例如,http 或file 或 * 注意:对文件 URL 的访问不是自动的。用

  • MySQL提供了一个标准的SQL模式匹配,和基于扩展的正则表达式的模式匹配Unix工具(如vi,grep,sed)一样。 SQL模式匹配可以使用“_“来匹配任意单个字符,”%“可以用来匹配任意数量(包含0个字符)的字符。在MySQL中,SQL模式匹配的大小写默认是不敏感的,以下有一些例子,当你在使用SQL模式时,不要使用 = 或 <>,而是使用LIKE 或 NOT LIKE。 要找到以字符“b"开