Apigee策略中介 - 分配消息/提取变量

时间:2016-03-07 05:33:59

标签: javascript apigee

我通过Apigee Edge公开了一个基于REST接口的JSON。

在外部,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.移动原始请求正文,并将其添加到“data”元素 2.生成GUID并将其分配给“correlationId”

我假设我还需要一个JavaScript政策?或者这可以只在一个JavaScript政策中实现?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我使用了JavaScript策略,并将其应用于Target Endpoint PreFlow:

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);