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

Javascript Apigee策略中介-分配消息/提取变量,javascript,apigee,Javascript,Apigee,我通过Apigee Edge公开了一个JSON over REST接口 在外部,API使用者将看到以下API规范: i、 e.创建客户 POST /customers?api_key=ABC123 { "name": "John", "surname": "Smith" } 我采用了以下政策: 1.验证API密钥 2.删除API密钥 我想知道在调用下游系统时,如何使用提取/分配消息策略来实现以下“重构”请求负载 POST /downstream-customer-service

我通过Apigee Edge公开了一个JSON over REST接口

在外部,API使用者将看到以下API规范:

i、 e.创建客户

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"      
   }
}
邮政/下游客户服务
{
“correlationId”:“”,
“数据”:{
“姓名”:“约翰”,
“姓氏”:“史密斯”
}
}
因此,我需要: 1.移动原始请求主体,并将其添加到“数据”元素中 2.生成GUID并将其分配给“correlationId”

我想我还需要一个javascript策略?或者这只能在javascript策略中实现吗


提前感谢。

我使用了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);