【问题标题】:how to pass query URL in wso2esb to endpoint如何将 wso2esb 中的查询 URL 传递到端点
【发布时间】:2018-06-10 10:20:52
【问题描述】:

我在 WSO2ESB 中配置了以下 API:

   <api xmlns="http://ws.apache.org/ns/synapse" name="service" context="/service">
   <resource methods="POST">
      <inSequence>
         <call>
            <endpoint>
               <http method="POST" uri-template="https://webapps.localhost/service.php"/>
            </endpoint>
         </call>
         <send/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
      <faultSequence>
         <log level="full"/>
      </faultSequence>
   </resource>
</api>

调用工作正常,POST 内容正常发送到端点。

curl -X POST -d "a=1&b=2" localhost:8280/service

从 service.php 文件中我可以很好地提取 POST 参数。

现在,如果我想将动态 GET 参数按原样传递给端点,该怎么做?

curl -X POST -d "a=1&b=2" localhost:8280/service?c=3&d=4

我知道(至少我所理解的)可以使用属性中介,但这是针对查询 url 中的已知参数(例如,$url:c),但我不想限制它,只需传递查询url 原样指向目标端点。

任何帮助将不胜感激。

【问题讨论】:

标签: wso2 wso2esb wso2ei


【解决方案1】:

可以通过REST_URL_POSTFIX访问资源路径

<property name="path" expression="$axis2:REST_URL_POSTFIX"/>

根据您的请求 URL,$ctx:path 应包含 ?c=3&amp;d=4

【讨论】:

    【解决方案2】:

    这里只是为了更新,使用 Address EndPoint 而不是 HTTP EndPoint(基于 URI-Template)

    【讨论】:

      【解决方案3】:

      通常我所做的是在端点的 URI 模板上定义两个变量,然后使用属性中介来设置它们。

      类似

      <http method="POST" uri-template="https://webapps.localhost/service?c={uri.var.c}&d={uri.var.d}"
      

      然后使用属性调解器将属性uri.var.curi.var.d 设置为预期值。

      【讨论】:

        猜你喜欢
        • 2014-12-17
        • 1970-01-01
        • 2017-08-28
        • 1970-01-01
        • 2015-02-03
        • 1970-01-01
        • 2015-01-30
        • 2021-09-02
        • 1970-01-01
        相关资源
        最近更新 更多