无法将wso2 ESB中的JSON请求正文参数作为api

时间:2016-04-19 06:56:47

标签: json wso2 wso2esb jsonpath

我在WSO2 ESB(4.8.1)中创建了一个API,我想通过请求体向该API发送PUT请求。我试过了sample 我想在定义的API的序列中记录属性值。

这是我的要求机构:

request body (JSON)

这是我尝试记录位置名称的方式:

XML log

但是我收到这样的错误:

  

(错误 - SynapseJsonPath #stringValueOf。评估JSON路径时出错。返回空结果。错误>>>无效路径)

error screenshot

那么如何阅读这些值?

2 个答案:

答案 0 :(得分:5)

为了达到您的要求,您应该发送带有下面请求的“Content-Type”HTTP标头

    "Content-Type : application/json"

enter image description here

然后您可以记录下面的特定JSON元素。

 <log>
    <property name="location" expression="json-eval($.coordinates.location[0].name)"></property>
 </log>

然后你可以看到以下日志,

enter image description here

感谢。

答案 1 :(得分:1)

If you want to get single variable from user in json request you can use this code 


Use This json:
    {

    "namee":"UsmanYaqooooooooooob"
    }


Api Code: 
        <api xmlns="http://ws.apache.org/ns/synapse" name="Hello" context="/hello">
           <resource methods="POST" uri-template="/post">
              <inSequence>
                 <log level="custom">
                    <property name="===========inSequence" value="****"></property>
                    <property name="locationsssssssss" expression="json-eval(.namee)"></property>
                 </log>
                 <payloadFactory media-type="json">
                    <format>{"hello":"world"}</format>
                    <args></args>
                 </payloadFactory>
                 <property name="messageType" value="text/xml"></property>
                 <respond></respond>
              </inSequence>
           </resource>
        </api>