繁体   English   中英

代理中查询参数检查时如何处理Apigee错误情况

[英]How to handle Apigee error case when query parameter checking in proxy

我有以下几点。 参数“ g”允许为“ on”或“ off”,否则转到错误策略。 但是,从未调用过异常情况。 相反,如果将非“ on”或“ off”的值作为“ g”传递,则调用“ on”情况。 这是为什么? 还是有更好的表达方式?

<PreFlow name="PreFlow">
    <Request>
        <Step>
            <Condition>message.queryparam.g := "on"</Condition>
            <Name>GOn</Name>
        </Step>
        <Step>
            <Condition>message.queryparam.g := "off"</Condition>
            <Name>GOff</Name>
        </Step>
        <Step>
            <Condition>!((message.queryparam.g := "off") || (message.queryparam.g := "on"))</Condition>
            <Name>GError</Name>
        </Step>
    </Request>

我刚刚测试了您的条件,它们可以正常工作。 如果请求具有以下查询参数值:

g=ong=ON ,将执行GOn策略。

g=offg=OFF ,将执行GOff策略。

g={anythingelse} ,将执行GError策略。

:=运算符是不区分大小写的等于运算符。 您如何确定条件不起作用? 使用您的示例,我将每个策略都设置为具有不同故障响应有效负载的RaiseFault。 这使我可以验证根据g的值执行了哪个策略。

我同意Michael,显示的代码是正确的。

考虑可能导致此代码无法正常工作的问题:

  1. 确保您的GOn,GOff和GError策略中的名称正确。 (如果正在脱机工作,则文件名与调用策略无关。)例如,GOn策略的外部元素应类似于

    <AssignMessage name =“ GOn”>

  2. 如果GOn使用AssignMessage修改消息,则可能会在一个步骤中破坏g查询参数,并且以后的检查可能会失败。 如果要修改消息,请在执行检查之前将message.queryparam.g存储到其他变量中。

  3. 我将使用跟踪工具Postman之类的工具来查看每个请求的情况。 跟踪应该告诉您已检查的变量及其值,并且您可能能够看到出错的地方。

如果您有多个条件检查,请尝试使用javascritp。在Java脚本中检查各种条件并设置flag。然后在基于flag的值的流中执行所需的策略。但是对于上述实例,如Michael所指出的,条件应该能按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM