2014-10-09 57 views
1

我需要將系統變量「system.timestamp」的值保存到流量變量中。 (這樣做是爲了獲得之間的一些標註政策的持續時間)在ApiGEE中帶有非字符串值的流量變量

然而,由於AssignMessage政策引發的錯,我不能讀它:

{ 
    "fault": { 
     "faultstring": "java.lang.Integer cannot be cast to java.lang.String", 
     "detail": { 
      "errorcode": "Internal Server Error" 
     } 
    } 
} 

不長,也沒有整型值可以是閱讀,只有字符串,這是有點奇怪,因爲暴露變量的人不能讀取的情況是什麼?

我試圖避免「非優雅」的Javascript政策,如果這是不可能的,所以這裏我使用讀取值[非常基本] AssignMessage政策:

<AssignMessage async="false" continueOnError="false" enabled="true" name="time-test"> 
    <DisplayName>TimeTest</DisplayName> 

    <AssignVariable> 
     <Name>myvar</Name> 
     <Ref>system.timestamp</Ref> 
    </AssignVariable> 

    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> 
    <AssignTo createNew="false" transport="http" type="request"/> 
</AssignMessage> 

系統.timestamp變量記錄在此處: http://apigee.com/docs/api-services/reference/variables-reference#-a-class-jumplink-name-system-a-system-variables

回答

1

如果AssignMessage策略不起作用,您應該可以使用JavaScript policy完成此操作。這將允許您將時間戳轉換爲任何需要的形式。同樣,可以使用JavaScript策略執行任何時間計算或稍後在代理中進行操作。

+0

謝謝Mike,這是我的計劃B.我會在我的問題中添加「沒有javascript策略」的說明。 – Migs 2014-10-09 16:51:37

1

Migs,這是該產品目前的侷限性。我也在我的代碼中使用system.timestamp,並用1或2行JavaScript策略來解決這個問題,該策略創建一個名爲systemTimestamp的新字符串變量。我目前還不知道更好的解決方案。

+0

非常感謝你Mike,我看你是「首席架構師@ Apigee」,所以我不能指望任何比你的答案更官方的東西。爲了紀念先入先出的規則,我會將以前的麥克回答標記爲他所建議的那樣。 – Migs 2014-10-10 20:39:21