• 请求URI相关条件原语
    • 通用原语参数
    • 请求Host相关
    • 请求Path相关
    • 请求Query相关
    • 请求Port相关
    • 请求完整URL相关

    请求URI相关条件原语

    注: URI的一般形式 http://host[:port\]/path/?query](http://host/path/?query)

    通用原语参数

    • patterns:字符串,表示多个可匹配的pattern,用‘|’连接
    • case_insensitive:bool类型,是否忽略大小写

    请求Host相关

    注:由于host本身是忽略大小写的,所以所有host相关的原语不提供是否大小写忽略选项

    • req_host_in(patterns)
      • 判断http的host是否为patterns之一
      • 忽略大小写精确匹配
        1. // 匹配www.bfe-networks.com或bfe-networks.com,忽略大小写
        2. req_host_in(“www.bfe-networks.com|bfe-networks.com”)
      • 注意: 多个pattern中间的|两侧不可以有空格
        1. 正确:req_host_in(“www.bfe-networks.com|bfe-networks.com”)
        2. 错误:req_host_in(“www.bfe-networks.com | bfe-networks.com”)

    请求Path相关

    • req_path_in(patterns, case_insensitive)

      • 判断http的path是否为patterns之一
        1. // path是否为/abc,忽略大小写
        2. req_path_in(“/abc”, true)
    • req_path_prefix_in(patterns, case_insensitive)

      • 判断http的path是否前缀匹配patterns之一
        1. // path的前缀是否为/x/y,大小写敏感
        2. req_path_prefix_in(“/x/y”, false)
    • req_path_suffix_in(patterns, case_insensitive)

      • 判断http的path是否后缀匹配patterns之一
        1. // path的后缀是否为/x/y,大小写敏感
        2. req_path_suffix_in(“/x/y”, false)

    注意:req_path_in和req_path_prefix_in的patterns需要包含开头的/

    请求Query相关

    • req_query_key_in(patterns)

      • 判断请求query key是否为patterns之一
        1. # 判断请求参数中是否有名字为abc的key
        2. req_query_key_exist(“abc”)
    • req_query_key_prefix_in(patterns)

      • 判断query key是否为前缀匹配patterns之一
        1. # 判断请求参数中是否有名字前缀为abc的key
        2. req_query_key_prefix_in(“abc”)
    • req_query_value_in(key, patterns, case_insensitive)

      • 判断query中key的值是否精确匹配patterns之一
        1. # 判断请求参数中key为abc的参数值为XXX,大小写忽略
        2. req_query_value_in(“abc”, "XXX", true)
    • req_query_value_prefix_in(key, patterns, case_insensitive)

      • 判断query中key的值是否前缀匹配patterns之一
        1. # 判断请求参数中key为abc的参数值前缀为XXX,大小写忽略
        2. req_query_value_prefix_in(“abc”, "XXX", true)
    • req_query_value_suffix_in(key, patterns, case_insensitive)

      • 判断query中key的值是否后缀匹配patterns之一
        1. # 判断请求参数中key为abc的参数值前缀为XXX,大小写忽略
        2. req_query_value_suffix_in(“abc”, "XXX", true)
    • req_query_value_hash_in(key, patterns, case_insensitive)

      • 对query中key的值哈希取模,判断是否匹配patterns之一(模值0~9999)
        1. # 判断请求参数中key为abc的参数值哈希取模后值为100,大小写忽略
        2. req_query_value_hash_in(“abc”, "100", true)

    请求Port相关

    • req_port_in(patterns)
      • 判断请求端口是否为patterns之一
        1. # 判断端口是否为80或8080
        2. req_port_in(“80|8080”)

    请求完整URL相关

    • req_url_regmatch(patterns)
      • patterns,正则表达式,用来匹配完整url的正则表达式
      • 推荐使用反引号,不需要额外进行转义
        1. # 判断url是否是/s?word=123
        2. req_url_regmatch(`/s\?word=123`)