我通过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政策中实现?
提前谢谢。
答案 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);