2016-03-07 49 views
0

我正在通過Apigee Edge公開REST接口上的JSON。Apigee策略調解 - 分配消息/提取變量

從外部看,API消費者會看到下面的API規格:

即創造顧客。

POST /customers?api_key=ABC123 
{ 
    "name": "John", 
    "surname": "Smith" 
} 

我已經申請了以下政策: 1.驗證API密鑰 2.拆下API密鑰

我想知道我怎麼可能能夠使用提取/分配消息策略以實現以下「在調用我的下游系統時重新構造「請求有效載荷」。

POST /downstream-customer-service 
{ 
    "correlationId": "<generated guid>", 
    "data": { 
     "name": "John", 
     "surname": "Smith"  
    } 
} 

所以,我需要: 1.將原來的請求主體,並將其添加到「數據」元素 2.生成GUID並將其分配給了「的correlationID」

我假設我也需要一個JavaScript策略?或者只能在一個JavaScript策略中實現?

預先感謝您。

回答

0

我用一個JavaScript政策,其應用到目標端點預流:

var This = (function() { 
    self.generateUUID = function(a) { 
     // UUID4 generation: https://gist.github.com/jed/982883 
     return a?(a^Math.random()*16>>a/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,self.generateUUID); 
    }, 
    self.modifyPayload = function(data, generateCorrelationId) { 
     var newPayload = { 
      "data": data 
     }; 

     if(generateCorrelationId) 
      newPayload["correlationId"] = self.generateUUID(); 

     return newPayload; 
    } 
    return self; 
})(); 

var modifiedData = This.modifyPayload(context.targetRequest.body.asJSON); 
context.setVariable("context.targetRequest.body", modifiedData);