0

我想知道我的问题的解决方案,但我没有找到任何可以帮助我的东西:(

这是我的问题:我想通过将远程 REST Web 服务传递给 ESB 来在 DB 上记录客户端调用来调用它。我也想将一个 POST 查询变量传递给我的远程 ws,例如 name=value & name2=value2!

我做了一个代理服务,但我不知道如何将查询变量附加到 IT。

我可以使用此代理正确联系远程 ws,但我无法通过 POST VAR,因为我不知道该怎么做。

我通过客户端外壳进行了以下 curl 调用:

curl -k -i http://neanb330:8281/services/BioframeProxyService

在我的代理服务中,我有这个端点:

http://www.ebi.ac.uk/Tools/services/rest/emboss_matcher/run

但是这个服务需要输入两个参数并输出一个我想为客户写的jobid。

我需要制作一个 REST API 吗?我如何在数据库上记录客户端调用?

谢谢

4

3 回答 3

1

这篇文章通过示例详细描述了如何在 WSO2 ESB 中处理休息请求。 http://wso2.com/library/articles/2012/09/get-cup-coffee-wso2-way/

这是解释rest url映射的官方文档

http://docs.wso2.org/display/ESB470/Getting+Started+with+REST+APIs

于 2013-10-17T15:14:07.000 回答
0

我在 Rest to rest 场景中找到了 GET 和 POST 的解决方案。

这用于 POST。我使用代理服务和 curl 调用:

    <?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="BioframeProxyServiceRunBis"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <log level="full"/>
         <property name="ContentType" value="text/xml" scope="axis2" type="STRING"/>
         <switch source="$axis2:HTTP_METHOD">
            <case regex="GET">
               <property name="HTTP_METHOD" value="GET" scope="axis2" type="STRING"/>
            </case>
            <case regex="POST">
               <property name="HTTP_METHOD" value="POST" scope="axis2" type="STRING"/>
            </case>
            <default/>
         </switch>
         <send>
            <endpoint>
               <address uri="http://www.ebi.ac.uk/Tools/services/rest/emboss_matcher/run/"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
   </target>
   <description/>
</proxy>

curl -k -X POST https://neanb330:8244/services/BioframeProxyServiceRunBis -d asequence=FASTA -d bsequence=FASTA -d email=maforast@gmail.com -v

我没有找到保存休息调用数据库的解决方案

于 2013-10-21T08:57:24.160 回答
0

如果您的问题是如何使用 curl 将数据发送到端点,那么这就是方法

curl -v --request POST -d '<Values><name1>ABC</name1><name2>Smith</name2></Values>' -H Content-Type:"text/xml" http://neanb330:8281/services/BioframeProxyService

然后您可以将值获取到 ESB,如下所示

<property name="name1" expression="//name1/text()"/>
     <property name="name2" expression="//name2/text()"/>
于 2013-10-18T01:49:15.253 回答