我正在使用WSO2 ESB调解器来尝试创建一个API,该API对特定的Rest API进行分页。我正在使用序列中介的递归来调用动态变化的端点,直到收集完所有数据。不幸的是,我无法弄清楚如何在发送之前将所有响应聚合成一个JSON。
任何帮助都将不胜感激。
这是当前的代码:
<api context="/axceleratePaginated" name="axceleratePaginated">
<resource methods="GET" protocol="http" url-mapping="/courses">
<inSequence>
<property name="uri.var.resource" value="courses"/>
<property name="uri.var.offset" value="0"/>
<property name="uri.var.displayLength" value="99"/>
<property name="JSONContinue" value="true"/>
<sequence key="paginationSequence"/>
<send/>
</inSequence>
<outSequence>
<!-- aggregate here? -->
<send/>
</outSequence>
</resource>
</api>
...
<sequence name="paginationSequence" trace="enable">
<header name="apitoken" scope="transport" value="***********"/>
<header name="wstoken" scope="transport" value="************"/>
<call>
<endpoint>
<http method="GET" trace="enable" uri-template="https://admin.axcelerate.com.au/api/{uri.var.resource}?displayLength={uri.var.displayLength}&offset={uri.var.offset}"/>
</endpoint>
</call>
<property expression="json-eval($.)" name="JSONPayload"/>
<filter regex="true" source="get-property('JSONContinue')">
<then>
<script language="js">
<![CDATA[
java.lang.Thread.sleep(200);
var offset = parseInt(mc.getProperty('uri.var.offset'));
offset += 100;
var pl_string = mc.getProperty('JSONPayload');
var JSONPayloadLength = pl_string.length();
if (JSONPayloadLength === 3){
mc.setProperty('JSONContinue','false');
}
offset = offset.toString();
mc.setProperty('uri.var.offset',offset);
]]>
</script>
<sequence key="paginationSequence"/>
</then>
</filter>
</sequence>
答案 0 :(得分:0)
您可以使用Loopback介体[1]将消息从流(请求路径)发送到out流(响应路径)。