条件语法

基本概念: 原语、表达式和变量

  • 条件原语(Condition Primitive)

    • 最基本的条件判断单元,定义了比较的原语
    1. req_host_in("www.bfe-networks.com|bfe-networks.com") # host是两个域名之一
  • 条件表达式(Condition Expression):基于条件原语的“与/或/非组合”

    1. req_host_in("bfe-networks.com") && req_method_in("GET") # 域名是bfe-networks.com且方法是GET
  • 条件变量(Condition Variable)

    • 可以将条件表达式赋值给一个变量,这个变量被定义为条件变量
    1. bfe_host = req_host_in("bfe-networks.com") # 将条件表达式赋值给变量bfe_host
  • 高级条件表达式(Advanced Condition Expression):基于条件原语和条件变量的“与/或/非组合”

    • 在高级条件表达式中,条件变量以$前缀作为标示
    1. $news_host && req_method_in("GET") # 符合变量news_host且方法是GET

条件原语的语法

  • 条件原语是最基本的条件判断单元,形式为:

func_name( params )

  • 条件原语类似于函数定义: func_name是条件原语名称; params是参数,可能是1个或多个
  • 条件原语的返回值都是bool类型
  • BFE支持一系列预定义的内置条件原语
    • 例: req_method_in(“GET|POST”) ,表示判断http请求的方法是不是GET或POST

条件表达式的语法

条件表达式的语法定义如下:

  • 与c语言中的&&、||、!有一致的优先级和结合律

  • 语法描述

    1. Condition Expression(CE) ->
    2. CE && CE
    3. | CE || CE
    4. | ( CE )
    5. | ! CE
    6. | Condition Primitive

高级条件表达式的语法

高级条件表达式的语法定义如下:

  • 与c语言中的&&、||、!有一致的优先级和结合律

  • 语法描述

    1. Advanced Condition Expression(ACE) ->
    2. ACE && ACE
    3. | ACE || ACE
    4. | ( ACE)
    5. | ! ACE
    6. | Condition Primitive
    7. | Condition Variable