我需要帮助为我的任务之一建立APIM策略。
我有两个有效载荷。
从外部服务中获取“UniqueID”并验证web钩子是否来自该外部服务的人。
当发送请求时,另一个有效负载在请求体中。
这两个有效载荷有点不同,所以当我将来自外部服务的有效负载放在一起时,我会得到缺少的body请求,因为API期望请求主体中的另一个有效负载。
我想要APIM做的是修改(更改键名,添加新键),使有效负载看起来与API所期望的完全一样。
Payload1
{
"DocumentID": "221",
"UniqueID": "1001",
"dependentee_name": {
"first": "Tony",
"last": "Stark"
},
"insurer_first_name": "Steve",
"insurer_last_name": "Rogers"
}Payload2
{
"insurer": {
"firstName": "Steve",
"lastName": "Rogers"
},
"dependentee": {
"firstName": "Tony",
"lastName": "Stark"
}
}Payload3 -预期
{
"DocumentID": "221",
"UniqueID": "1001",
"insurer": {
"firstName": "Steve",
"lastName": "Rogers"
},
"dependentee": {
"firstName": "Tony",
"lastName": "Stark"
}
}我知道我必须做一些事情,或设置变量,以获得身体。但我不确定,我将如何添加键和修改它的名称。任何Azure管理的例子都是非常有用的
发布于 2022-09-02 05:13:46
我不确定是否理解您的问题,但我可以提供一个如何更改JSON对象结构的示例。使用新的结构创建了一个新的JObject,请求体的值必须在新对象中设置。
因此,我创建了一个POST操作来转换JSON:
请求体: Payload1
政策:
<policies>
<inbound>
<base />
<return-response>
<set-status code="200" reason="ok" />
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-body>@{
var body = context.Request.Body.As<JObject>(true);
var transformedBody = new JObject();
transformedBody["DocumentID"] = body["DocumentID"];
transformedBody["UniqueID"] = body["UniqueID"];
var insurer = new JObject();
insurer["firstName"] = body["insurer_first_name"];
insurer["lastName"] = body["insurer_last_name"];
transformedBody["insurer"] = insurer;
var bodyDependentee_name = body["dependentee_name"] as JObject;
var dependentee = new JObject();
dependentee["firstName"] = bodyDependentee_name["first"];
dependentee["lastName"] = bodyDependentee_name["last"];
transformedBody["dependentee"] = dependentee;
return transformedBody.ToString();
}</set-body>
</return-response>
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>结果:

POST https://rfqapiservicey27itmeb4cf7q.azure-api.net/abc/transform HTTP/1.1
主机: rfqapiservicey27itmeb4cf7q.azure-api.net
{
"DocumentID": "221",
"UniqueID": "1001",
"dependentee_name": {
"first": "Tony",
"last": "Stark"
},
"insurer_first_name": "Steve",
"insurer_last_name": "Rogers"
}HTTP/1.1200ok
内容长度: 202
内容类型: application/json
日期:星期五,9月02日05:05:58格林尼治时间
请求-上下文: appId=cid-v1:a10dc7c9-c354-40a2-acf3-1401681f7808
差异:来源
{
"DocumentID": "221",
"UniqueID": "1001",
"insurer": {
"firstName": "Steve",
"lastName": "Rogers"
},
"dependentee": {
"firstName": "Tony",
"lastName": "Stark"
}
}https://stackoverflow.com/questions/73577760
复制相似问题