簡體   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