本文为您介绍条件判断相关函数的语法、说明、参数、返回值和示例。

and

函数详细解释如下:
  • 语法:and(arg, ...)
  • 说明
    • 逻辑与运算符。
    • 支持短路语义,即某个参数为假时,后续参数不再进行求值。
  • 参数

    一个或多个参数,参数类型不限。

  • 返回值

    全部参数为真时返回true,任一参数为假时返回false

  • 示例
    if and($arg_mode, eq($arg_mode, 'set_header')) {
        add_rsp_header('USER-DEFINED-1','path1')
    }
    
    说明:
    a. 当请求携带mode参数、并且mode参数等于set_header时,设置响应头USER-DEFINED-1
    b. 当请求不携带mode参数,短路语义生效,不再执行后续的eq比较;由于and()为假,不会设置响应头USER-DEFINED-1

or

函数详细解释如下:
  • 语法:or(arg, ...)
  • 说明
    • 逻辑或运算符。
    • 支持短路语义,即某个参数为真时,后续参数不再进行求值。
  • 参数

    一个或多个参数,参数类型不限。

  • 返回值

    任一参数为真时返回true,全部参数为假返时false

  • 示例
    if and($http_from, or(eq($http_from, 'wap'), eq($http_from, 'comos'))) {
        rewrite(concat('http://tech.com.cn/zt_d/we2015/', $http_from), 'enhance_redirect')
    }
    
    说明:
    a. 当请求头from存在,且其值为[wap|comos]时,302重写向至 http://tech.com.cn/zt_d/we2015/[wap|comos]
    b. 当请求头from存在,且其值为wap时,短路语义生效,不再执行后续eq comos比较;同时,or()返回true

not

函数详细解释如下:
  • 语法:not(arg)
  • 说明

    逻辑运算符取反。参数undeffalse为假,其余为真。

  • 参数

    仅接受1个参数,参数类型不限。

  • 返回值
    • true
    • false
  • 示例
    if not($arg_key) {
        exit(403)
    }
    说明:如果请求未携带参数key时,403拒绝请求。
    
    if not($cookie_user) {
        exit(403, 'not cookie user')
    }
    说明:当请求未携带cookie user时,403拒绝请求,响应body为'not cookie user'
    
    if not(0) {
        exit(403)
    }
    说明:not(0)的结果为false
    
    if not(false) {
        exit(403)
    }
    说明:not(false)的结果为true

eq

函数详细解释如下:
  • 语法:eq(arg1, arg2)
  • 说明

    比较2个参数是否相等。

  • 参数
    • arg1:任意类型。
    • arg2:应与arg1类型相同。
  • 返回值

    参数相等返回true,否则返回false

  • 示例
    key1 = 'value1'
    key2 = 'value2'
    if and($arg_k1, $arg_k2, eq(key1, $arg_k1), ne(key2, $arg_k2)) {
        say('match condition')
    }
    
    说明:
    a. 请求参数k1存在,且请求参数k2存在时,执行后续的比较操作;
    b. 请求参数k1 or k2不存在时,短路语义生效,不再执行后续的比较操作;
    c. eq: 请求参数k1的值是否等于value1;
    d. ne: 请求参数k2的值不等于value2;
    e. 当请求参数k1/k2均存在,且k1等于value1,且k2不等于value2时,输出响应体match condition

ne

函数详细解释如下:
  • 语法:ne(arg1, arg2)
  • 说明

    比较2个参数是否不等。

  • 参数
    • arg1:任意类型。
    • arg2:应与arg1类型相同。
  • 返回值

    参数不等返回true,否则返回false

  • 示例
    key1 = 'value1'
    key2 = 'value2'
    if and($arg_k1, $arg_k2, eq(key1, $arg_k1), ne(key2, $arg_k2)) {
        say('match condition')
    }
    
    说明:
    a. 请求参数k1存在,且请求参数k2存在时,执行后续的比较操作;
    b. 请求参数k1 or k2不存在时,短路语义生效,不再执行后续的比较操作;
    c. eq: 请求参数k1的值是否等于value1;
    d. ne: 请求参数k2的值不等于value2;
    e. 当请求参数k1/k2均存在,且k1等于value1,且k2不等于value2时,输出响应体match condition