Azure API 管理(策略)

2023-12-24

我需要帮助为我的一项任务制定 APIM 策略。
我有两个有效负载。

从外部服务获取“UniqueID”,并验证 Webhook 来自该外部服务。
发送请求时,其他有效负载将进入请求正文。

这两个有效负载有些不同,因此当我将来自外部服务的有效负载放入其中时,我会丢失正文请求,因为 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"
  }
}

有效负载3 - 预期

{
  "DocumentID": "221",
  "UniqueID": "1001",
  "insurer": {
    "firstName": "Steve",
    "lastName": "Rogers"
  },
  "dependentee": {
    "firstName": "Tony",
    "lastName": "Stark"
  }
}

 

我知道我必须对获取主体做一些事情或设置变量。但我不确定如何添加键并修改其名称。 Azure API 管理执行此操作的任何示例都会非常有帮助


我不确定我是否理解您的问题,但我可以为您提供一个如何更改 JSON 对象结构的示例。 一个新的JObject使用新结构创建,并且必须在新对象中设置请求正文中的值。

因此,我创建了一个转换 JSON 的 POST 操作:

  • 请求正文:有效负载1
  • 响应正文:有效负载3

Policy:

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

Result:
enter image description here

POST https://rfqapiservicey27itmeb4cf7q.azure-api.net/abc/transform https://rfqapiservicey27itmeb4cf7q.azure-api.net/abc/transformHTTP/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.1 200 好
内容长度:202
内容类型:应用程序/json
日期: 2022 年 9 月 2 日星期五 05:05:58 GMT
请求上下文:appId=cid-v1:a10dc7c9-c354-40a2-acf3-1401681f7808
不同:起源

{
  "DocumentID": "221",
  "UniqueID": "1001",
  "insurer": {
    "firstName": "Steve",
    "lastName": "Rogers"
  },
  "dependentee": {
    "firstName": "Tony",
    "lastName": "Stark"
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure API 管理(策略) 的相关文章

随机推荐

  • 在线程之间划分奇数数量

    我刚刚学习 Java 中的线程 我想按字母顺序对单词列表进行排序 我的程序读取 txt 文件中的单词并将它们放入字符串数组中 用户可以自己选择要使用多少个线程 我想将数组分割成均匀 尽可能 的块 线程可以自行排序 所以我的问题是 如何在线程
  • 在父进程退出时杀死子进程

    我对 C 和编程非常陌生 需要一些帮助 在 linux cygwin 上的 c 中 我需要在退出时删除所有子进程 我看过其他类似的问题 但无法使其发挥作用 我试过了 atexit killzombies in parent process
  • 设定百分比内的局部最大识别(不利情况下触发 True)

    寻求识别 标志 True 何时 col1 中的当前值下降到低于 col1 中最近达到的局部最大值设定的百分比 这样就会有多个这样的信号 如达到最大值并且当前值下降设定的百分比 即自动重置 除了百分比之外没有设定阈值 请注意 标志 True
  • 使用 MSBuild 调用设置 AssemblyFileVersion?

    我们有一个基于批处理的构建过程 并且我们仅使用 MSBuild 从 Visual Studio 编译我们的项目文件 我们还将 wix 集成到我们的构建过程中 为了设置软件的版本 我们在主构建脚本中指定了一些在构建过程中使用的环境变量 我的问
  • php 框架中的全局变量开销

    我目前正在开发一个框架 它使用一个对象Core类 此类具有巨大的功能并使框架正常工作 该框架遵循 MVC 架构并具有松散耦合的模型 控制 视图类 这些类需要引用Core课重 到目前为止我所做的是 创建单个对象Core类并通过 PHP 关键字
  • Django REST Framework 和 MongoEngine 的 AttributeError

    我正在尝试将 Django 和 Django REST Framework 与 MongoEngine 一起使用 但它似乎对我不起作用 我不知道哪里出了问题 也许有人可以帮助我 这是代码 模型 py from mongoengine imp
  • 使用 gcc 链接库:参数顺序

    当我将 Ubuntu 发行版升级到 11 10 后 我开始看到 gcc 的奇怪链接器行为 我能够通过移动我的 lgcc 命令末尾的参数 我的问题与中描述的问题类似 这个线程 https stackoverflow com questions
  • 如何在 Kubernetes 中回收 Pod

    我希望在一段时间后 例如每周或每月 从我的部署中优雅地回收我的 Pod 我知道如果我知道 Kubernetes 命令 我可以为此添加一个 cron 作业 问题是在 Kubernetes 中执行此操作的最佳方法是什么 哪个命令可以让我实现这个
  • WCF,自签名加密证书

    我想使用 aspnet 成员身份创建 WCF 服务来授权用户 但是 如果我只需要证书用于加密目的 那么它是自签名证书还是需要从供应商那里购买证书有关系吗 无论您是否对用户进行身份验证 自签名证书都会带来相同的风险 最佳实践是在生产环境中使用
  • ISAPI ZEND url 重写添加额外的“/index.php/”到 url

    我们最近在服务器上重新安装了我们的网站 系统管理员说这是一次精确的重建 在我看来确实如此 但发生了一些不同的事情 我最初并没有开发该网站 那些开发过的网站也不再可用 管理站点的网址现在是 admin site com index php s
  • 如何在模型 ir.actions.server odoo 12 中给出用户组(XML)?

    我使用这个 xml 代码在 操作 内添加一个按钮 但我需要将该按钮限制为某些用户组
  • Objective C:向视图控制器添加加载视图

    在我的应用程序中 我的许多页面都需要一个加载屏幕 如何创建与下面的屏幕截图类似的加载效果 检查 MBProgressHUD https github com jk MBProgressHUD https github com jk MBPr
  • 如何以编程方式更改列表视图高度..?

    我想知道如何以编程方式更改列表视图的高度 是否可以更改单个列表项的子项高度 ViewGroup LayoutParams params listView getLayoutParams params height whatYouWant l
  • 通过Python中的服务帐户访问Google Cloud Storage的权限

    我正在尝试获取一个服务帐户来在 Google Cloud Storage 中创建 blob 来自 Python 脚本 但我遇到了凭据问题 1 我为我的项目创建服务帐户 然后下载 json 格式的密钥文件 home user config g
  • 为什么数组需要 ClassTags 而 List 这样的集合不需要?

    这工作正常 def x A a A List a 没有适用于 A 的 ClassTag def y A a A Array a 但这当然是犹太洁食 def y A ClassTag a A Array a 是什么赋予了 数组在运行时保留其类
  • 按文件夹对伊斯坦布尔代码覆盖率报告进行分组

    我正在使用 istanbul 和 nyc 命令运行 NodeJs 的代码覆盖率报告 我使用 mocha 进行单元测试 我按照预期得到了每个文件的报告 但我希望看到的是具有单个目录摘要的报告 让我更详细地解释一下我得到了什么以及我想看到什么
  • ValueError:在 LightGBM 中检测到循环引用

    训练LightGBM模型时出现以下错误 Train the model import lightgbm as lgb lgb train lgb Dataset x train y train lgb val lgb Dataset x t
  • IE8 的 calc() 是否有仅 CSS 的后备方案

    我知道有一个CSS 后备calc 适用于IE6 7 https stackoverflow com questions 16034397 css calc alternative 同样 我知道有jQuery 的替代品 https stack
  • Android - 按下主页键时关闭应用程序

    我制作的这个应用程序运行良好 但是当我离开该应用程序并再次打开它时 它总是强制关闭 我怎样才能做到当用户按下主页和 或返回键时它会杀死应用程序进程 使得当应用程序再次打开时它有一个全新的开始 您不应该 终止进程 您应该处理主页按钮按下和其他
  • Azure API 管理(策略)

    我需要帮助为我的一项任务制定 APIM 策略 我有两个有效负载 从外部服务获取 UniqueID 并验证 Webhook 来自该外部服务 发送请求时 其他有效负载将进入请求正文 这两个有效负载有些不同 因此当我将来自外部服务的有效负载放入其