【问题标题】:wso2 api manager modify JSON payload sent to backendwso2 api manager 修改发送到后端的 JSON 有效负载
【发布时间】:2017-11-13 19:03:16
【问题描述】:

我将 REST API URL 定义为

https://hostname/[version]/[service]/[operation]

我想在 WSO2 API Manager 中转换 JSON 有效负载,以便将版本和操作放入其中。

所以 WSO2 会以如下形式发送到后端:

POST https://backend/[service]
{
    “version”: [version],
    “operation”: [operation]
}

所以我需要将版本和操作从 URL 放到 JSON 有效负载中。怎么做?

【问题讨论】:

  • 有几个选项 - 所以您想将操作和版本与原始有效负载一起发送还是代替它?
  • 我想将它与原始有效负载一起发送。所以原始有效载荷将附加操作和版本。

标签: json url wso2 wso2-am mediator


【解决方案1】:

据我了解,您希望使用资源 URI 定义(而不是 API 上下文)中的值创建一个新的有效负载和 POST。

假设:

  • 您不想更改方法(资源具有 POST 方法)。
  • 发布的原始请求也是 JSON 格式

您可能希望创建一个(突触)中介流,以便 ESB 构建此类消息。

在文档Adding Mediation Extensions 中描述了插入中介。将为 API 的每个请求执行此中介

有资源https://hostname/[version]/[service]/[operation]

在中介中,您可以构建 JSON 有效负载

<payloadFactory media-type="json">
  <format>{
      "version":"$1", 
      "service": "$2", 
      "some_original_data": "$3"
    }</format>
  <args>
    <arg  expression="get-property('uri.var.version')"/>
    <arg  expression="get-property('uri.var.service')"/>
    <arg  expression="$.person.name" evaluator="json" />
  </args>
</payloadFactory>

【讨论】:

  • 我正在尝试在https://hostname/01.00/test/myoperation 上执行此操作,我将始终将versionservice 作为空字符串。你能建议什么可能是错的吗?中介流程与您的帖子中描述的完全一样,versionservice 被定义为 API 上下文定义中的参数。似乎payloadFactory无法通过参数表达式看到它的值......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多