【发布时间】:2015-01-12 05:04:24
【问题描述】:
我实际上是在为 WSO2 数据服务服务器资源创建一个 RESTful 直通代理。
我想向 ESB 发送以下请求...
PUT /crm/contacts/267
...有了数据...
<contacts>
<firstname>John</firstname>
</contacts>
...以便更新联系人 267 的名字。
我使用脚本中介来获取联系人的 ID,并将其添加到 InSequence 中介流中的 XML 请求中(因为这是数据服务服务器需要它的格式)。然后,我尝试使用 HTTP 端点将请求发送到数据服务服务器。
这是我的 API 配置作为参考:
<api xmlns="http://ws.apache.org/ns/synapse" name="CRM" context="/crm">
<resource methods="PUT" uri-template="/contacts/{cid}">
<inSequence>
<script language="js"><![CDATA[ var request= mc.getPayloadXML(); var id = mc.getProperty('uri.var.cid'); var child = <id>{id}</id>; request.appendChild(child);mc.setPayloadXML(request); ]]></script>
<property name="messageType" value="application/xml" scope="axis2"/>
<property name="REST_URL_POSTFIX" scope="axis2" action="remove"/>
<send>
<endpoint>
<http method="put" uri-template="http://requestb.in/1h6werc1" />
</endpoint>
</send>
<log level="full" xmlns="http://ws.apache.org/ns/synapse"/>
</inSequence>
<outSequence>
<send/>
</outSequence>
</resource>
</api>
注意:此处指定的端点不是我的 DSS 端点,它只是我用来测试 API 输出的请求箱。
所以这里的主要问题是,当我检查请求箱时,我收到了请求,但没有请求正文。如果我将请求 bin URL 更改为 DSS 端点,则不会更新数据源。我可以直接使用 DSS 资源更新数据源,这样可以正常工作。
如果有指点,你可以给我,让我得到这个工作,将不胜感激!
谢谢,
紧张
【问题讨论】:
标签: rest api wso2 wso2esb wso2dss