【问题标题】:WSO2 REST - ESB - RESTWSO2 REST - ESB - REST
【发布时间】:2013-10-17 14:26:29
【问题描述】:

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

这是我的问题: 我想通过将远程 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 吗? 如何在 db 上记录客户端调用?

谢谢

【问题讨论】:

    标签: rest wso2 wso2esb


    【解决方案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

    【讨论】:

    • 我刚刚看到第一篇文章,但它有一个 SOAP WS 到后端。我在后端有一个 REST SERVICE。我找不到如何将 POST var 放入我的后端 REST SERVICE!
    • 使用 REST_URL_POSTFIX 属性追加和构造查询字符串,nuwanzone.blogspot.com/2012/07/…docs.wso2.org/display/ESB470/HTTP+Transport+Properties,在这篇文章中它是通过类中介实现的,stackoverflow.com/questions/14523977/…
    • tnx 回答,REST_URL_POSTFIX 帮助我很大,以实现对后端服务的响应。但是它没有以正确的方式在我的端点地址末尾放置“jobid”,因为我收到了 NOT_FOUND 响应但我希望 FINISHED。我的 api 是:
      ebi.ac.uk/Tools/services/rest/emboss_matcher/status/">
    • 好的,我在属性标签的属性上犯了错误,它想要 expression="get-property('uri.var.jobId')" 代替 value 并且它可以工作。这用于 GET 请求现在我尝试使用 POST 请求。
    • 任何人都可以帮我传递 POST 变量并在 madiator api 中处理它吗?我这样做:
      ebi.ac.uk/Tools/services/rest/emboss_matcher/run/"> 端点>
      但它不起作用
    【解决方案2】:

    如果您的问题是如何使用 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()"/>
    

    【讨论】:

    • 您好 tnx 回复,我想在 Api 中发送我的 POST 数据,而不是通过 curl,但我不能这样做。我想通过这个 curl 调用将我的参数传递给 api: curl 192.168.43.68:8281/run/asequence=FASTA/bsequence=FA STA/email=maforast@libero.it 并在 api 中使用这个:
      ebi.ac.uk/Tools/services/rest/emboss_matcher/run/" >
      但它不起作用
    【解决方案3】:

    我在 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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      • 2017-04-25
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多