• whistle 操作值


    whistle 的操作值可以分为两类,字符串 和 JSON 对象

    1、如果字符串不包含空格,可以直接写到配置里面

     pattern opProtocol://(strValue)

    2、如果字符串里包含空格,则可以把操作值先放到 whistle 界面的 Values:

     # 在Values里面创建一个key为 test.txt 的 key-value 对
     pattern opProtocol://{test.txt}

    3、如果操作值为 JSON 对象,则可以用以下几种格式:

          正常的JSON格式:

      {
           "key1": value1,
           "key2": value2,
           "keyN": valueN
      }

          行格式:

      # 以 `冒号+空格` 分隔
         key1: value1
         key2: value2
         keyN: valueN
    
         # 如果没有 `冒号+空格` ,则以第一个冒号分隔,如果没有冒号,则 value 为空字符串
         key1: value1
         key2:value2
         key3
         keyN: valueN
    

           内联格式(请求参数格式):

         # key 和 value 最好都 encodeURIComponent
         key1=value1&key2=value2&keyN=valueN

    4、模板字符串

    whistle 支持类似于 ES6 的模板字符串,通过模板字符串可以读取信息的一些信息并设置到规则中:

    pattern1 protocol://`xxx${reqCookie.cookieName}yyy`
    www.test.com/api http://`${clientIp}:8080`
    pattern3 protocol://`{test.json}`

    test.json

    {
        "url": "${url}",
        "port": "${port}",
        "version": "${version}",
        "query": "${query}", // 相当于 location.search ,如果 url 里面没有 ? 则为空字符串
        "search": "${search}", // 相当于 location.search ,如果 url 里面没有 ? 则为空字符串
        "queryString": "${queryString}",  // 相当于 location.search ,但如果 url 里面没有 ? 则为 ?
        "searchString": "${searchString}",  // 相当于 location.search ,但如果 url 里面没有 ? 则为 ?
        "queryValue": "${query.name}",
        "host": "${host}",
        "hostname": "${hostname}",
        "path": "${path}",
        "pathname": "${pathname}",
        "reqId": "${reqId}",
        "now": ${now},
        "method": "${method}",
        "xff": "${reqHeaders.x-test}",
        "other": "${reqHeaders.other}",
        "cookie": "${reqCookie}",
        "cookieValue": "${reqCookie.cookieName}",
        "clientIp": "${clientIp}"
    }

    这里 test.json 在规则中一定要用模板字符串引入

    protocol://`{test.json}`

    如下配置

      www.test.com/api http://`${clientIp}:8080`
     10.12.2.1 的请求 https://www.test.com/api/test  会转成 http://10.12.2.1:8080/test
    

      如果想获取响应阶段的状态码、服务端IP、响应头、响应cookie, 可以通过以下两种方式设置规则:

       1)、resScript

       2)、插件的resRulesServer

       通过这两种方式设置的响应规则,除了可以设置上述请求信息,还可以设置如下响应信息

    pattern3 protocol://`{test2.json}`

       test2.json

    {
    "url": "${url}",
    "search": "${url.search}",
    "query": "${url.query}",
    "queryValue": "${url.query.name}",
    "host": "${url.host}",
    "hostname": "${url.hostname}",
    "path": "${url.path}",
    "pathname": "${url.pathname}",
    "reqId": "${reqId}",
    "now": ${now},
    "method": "${method}",
    "xff": "${reqHeaders.x-forwarded-for}",
    "other": "${reqHeaders.other}",
    "cookie": "${reqCookie}",
    "cookieValue": "${reqCookie.cookieName}",
    "clientIp": "${clientIp}",
    "statusCode": "${statusCode}",
    "serverIp": "${serverIp}",
    "resHeaderValue": "${resHeaders.x-res-header-name}",
    "resCookieValue": "${resCookie.res_cookie_name}"
    }

     支持replace(pattern, replacement) 功能, 如:

    protocol://`${search.replace(/course=([^&]+)/ig,name=$1)}`
    protocol://`${search.replace(a,b)}`

      `query` 和 `queryString}` 的用途,

    # 不需要追加参数
    www.test.com/index.html redirect://`https://ke.qq.com/test${query}`
    
    # 需要追加参数
    www.test.com/index.html redirect://`https://ke.qq.com/test${queryString}&test=1`
    
    # 追加参数
    www.test.com redirect://`https://ke.qq.com${url.path}`
    
    # 修改为 301
    www.test.com redirect://`https://ke.qq.com${url.path}` replaceStatus://301
  • 相关阅读:
    验证手机和电话号码
    oracle取字符串长度的函数length()和hengthb()
    AngularJs教程
    nop commerce文档
    根据子查询批量删除的sql语句
    AngularJs赋值问题
    PetaPoco模糊查询
    js转换 /Date(1464671903000)/ 格式的日期的方法
    jquery-cookie插件怎么读写json数据
    executssql 函数的每一句代码的意思
  • 原文地址:https://www.cnblogs.com/zhishiyv/p/16393529.html
Copyright © 2020-2023  润新知