【问题标题】:Modifying Server Response Payload JSON修改服务器响应负载 JSON
【发布时间】:2015-01-06 01:08:35
【问题描述】:

我正在修改服务器发送的响应。为此,我设置了一个测试 API,该 API 仅用于发送回 IP,格式如下:

{
  "origin": "202.37.75.130"
}

我未修改的代码给了我想要的东西。

作为测试,我希望将“来源”的名称更改为“IP 地址”,希望得到这样的响应:

{
  "IP Address": "202.37.75.130"
}

为此,我修改了代码的 outSequence 部分,如下所示(我添加的只是 PayloadFactoryMediator 部分,过滤器之前就在那里):

<outSequence>
  <payloadFactory media-type="json">
    <format>{
      "IP Address" : {
      "$1"
      }
      }
    </format>
    <args>
      <arg evaluator="json" expression="$.origin"/>
    </args>
  </payloadFactory>
  <filter source="get-property('CORS_ORIGIN')" regex=".+">
    <then>
      <property name="Access-Control-Allow-Origin" expression="get-property('CORS_ORIGIN')" scope="transport"/>
      <property name="Access-Control-Expose-Headers" value="Assertion,X-Jwt-Assertion,X-User-Name,X-User-Domain" scope="transport"/>
    </then>
  </filter>
  <send/>
</outSequence>

但是,当我像以前一样卷曲到 API 时:

curl: (52) 来自服务器的空回复

谁能告诉我我做错了什么?

【问题讨论】:

  • 如果你从“IP地址”中取出空格会发生什么:{?
  • @Petro 同样的 curl 错误再次发生。我想知道这是否与过滤器有关。老实说,代码是使用 GUI 设置的,所以我不确定过滤器在该块中的作用。

标签: wso2 wso2esb wso2-am


【解决方案1】:

我通过为“http://ip.jsontest.com/”上的 json 服务创建代理服务来尝试您的方案,我得到了预期的结果。但我使用了与您相同的“payloadFactory”配置。在下面查看我的完整配置。

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="ipservice"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
    <target>
        <outSequence>
            <payloadFactory media-type="json">
                <format>{
                    "IP Address" : {
                    "$1"
                    }
                    }
                </format>
                <args>
                    <arg evaluator="json" expression="$.ip"/>
                </args>
            </payloadFactory>
            <send/>
        </outSequence>
        <endpoint>
            <address uri="http://ip.jsontest.com/"/>
        </endpoint>
    </target>
    <description/>
</proxy>

我也用过滤器标签尝试了上述配置。它工作正常。所以上面的配置没有错误。请检查您的 JSON 服务和其他配置。

我使用以下命令调用了该服务。

curl -v -X GET "http://localhost:8280/services/ipservice"

【讨论】:

  • 这很奇怪。我直接从您在这里写的内容中复制并粘贴了它,并且在一定程度上有效。我现在得到的是: { "jsonObject": {"IP_Address":"202.37.75.130"}} 现在试图摆脱那个 "jsonObject" 部分,所以我得到的只是 {"IP_Address":"202.37.75.130 "}
猜你喜欢
  • 2020-07-21
  • 2021-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
  • 2016-07-01
  • 1970-01-01
相关资源
最近更新 更多