【问题标题】:WSO2 http endpointWSO2 http端点
【发布时间】:2016-04-21 02:45:32
【问题描述】:

我想在 WSO2 中创建一个动态 HTTP 端点。我有一个包含所有属性值的序列(Tconf)。我正在使用 Property Mediator 导出它们。获得变量后,我将使用 SendMediator 发送休息请求。不幸的是,它似乎不起作用。不知道我做错了什么,但没有一个属性被附加。当我记录它们时,我可以看到所有属性。

<api xmlns="http://ws.apache.org/ns/synapse" name="TririgaApi" context="/tririga">
   <resource methods="GET" url-mapping="/employee">
      <inSequence>
         <sequence key="Tconf"/>
         <property xmlns:ns="http://org.apache.synapse/xsd" name="uri.var.service.user" expression="get-property('tri.service.user')"/>
         <property xmlns:ns="http://org.apache.synapse/xsd" name="uri.var.service.pass" expression="get-property('tri.service.pass')"/>
         <property xmlns:ns="http://org.apache.synapse/xsd" name="uri.var.service.host" expression="get-property('tri.service.host')"/>
         <property xmlns:ns="http://org.apache.synapse/xsd" name="uri.var.service.path" expression="get-property('tri.service.path')"/>
         <property xmlns:ns="http://org.apache.synapse/xsd" name="uri.var.service.wfName" expression="get-property('triPeople.database.employee.wfName')"/>
         <send>
            <endpoint>
               <http method="GET" uri-template="http://host:port/{uri.service.host}{uri.var.service.path}?USERNAME={uri.var.service.user}&amp;PASSWORD={uri.var.service.pass}&amp;ioName={uri.var.service.wfName}"/>
            </endpoint>
         </send>
      </inSequence>
   </resource>
</api>

【问题讨论】:

  • 首先使用日志中介检查这些值是否正确设置为属性。如果值设置正确,那么这应该可以工作

标签: rest wso2 wso2esb


【解决方案1】:

您可以像下面这样配置您的序列和 API 以满足您的要求。

序列配置:

<sequence xmlns="http://ws.apache.org/ns/synapse">
    <property name="uri.var.service.user" scope="default" type="STRING" value="testuser"/>
    <property name="uri.var.service.pass" scope="default" type="STRING" value="testpasswd"/>
    <property name="uri.var.service.host" scope="default" type="STRING" value="testhost"/>
    <property name="uri.var.service.path" scope="default" type="STRING" value="testpath"/>
    <property name="uri.var.service.wfName" scope="default"
        type="STRING" value="testwfName"/>
</sequence>

API 配置:

<api xmlns="http://ws.apache.org/ns/synapse" name="TririgaApi" context="/tririga">
   <resource methods="GET" url-mapping="/employee">
      <inSequence>
         <log>
            <property name="====== API IN =====" value="==== INSEQ ===="/>
         </log>
         <sequence key="conf:/Tconf"/>
         <property name="POST_TO_URI" value="true" scope="axis2"/>
         <send>
            <endpoint>
               <http method="GET" uri-template="http://localhost:9000/{uri.var.service.host}/{uri.var.service.path}?USERNAME={uri.var.service.user}&amp;PASSWORD={uri.var.service.pass}&amp;ioName={uri.var.service.wfName}"/>
            </endpoint>
         </send>
      </inSequence>
   </resource>
</api>

谢谢。

【讨论】:

  • 它奏效了,但必须进行更多研究。不确定这是否有意义,但是当我添加 {uri.var.service.path} 这是 abc/en/egf/rest/some 时它不起作用。但是,如果我对其进行硬编码,它就会起作用。我不知道为什么会这样。但感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-05
相关资源
最近更新 更多