【问题标题】:WSO2 ESB API configuration to send same post request to different Rest servicesWSO2 ESB API 配置将相同的发布请求发送到不同的 Rest 服务
【发布时间】:2015-04-23 13:48:27
【问题描述】:

我需要向不同的 REST 服务发送一个发布请求,以下是完整的要求。 我正在使用 WSO2 ESB 的 REST API 配置 首先,我需要向一项服务发布请求,并根据成功发布然后需要将其发布到另一项服务。但我需要从第一个服务获取响应并将其发送给前端。但我不需要从第二个服务获取响应。

请在下面找到 API 配置并帮助我。

<api xmlns="http://ws.apache.org/ns/synapse" name="test" context="/test">
   <resource methods="POST DELETE PUT GET">
      <inSequence>
         <log level="custom">
            <property name="Message Flow" value="Roovershof Plant Search API - IN"></property>
            <property name="HTTP_METHOD IS###########" expression="$axis2:HTTP_METHOD"></property>
            <property name="ip address" expression="get-property('axis2','REMOTE_ADDR')"></property>
            <property name="Authorization" expression="get-property('transport','Authorization')"></property>
         </log>
         <property name="TIME_IN" expression="get-property('SYSTEM_TIME')" scope="default" type="LONG"></property>
         <send>
            <endpoint>
               <address uri="service1"></address>
            </endpoint>
         </send>
         <log level="custom">
            <property name="Request Method :" expression="get-property('axis2', 'HTTP_METHOD')"></property>
         </log>
         <filter source="get-property('axis2', 'HTTP_SC')" regex="201">
            <then>
            <clone continueParent="true">
   <target>
      <property name="REST_URL_POSTFIX" scope="axis2" action="remove"></property>
               <property name="messageType" value="application/json" scope="axis2"></property>
               <property name="HTTP_METHOD" value="POST" scope="axis2"></property>
               <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2" type="STRING"></property>
               <property name="OUT_ONLY" value="true" scope="default" type="STRING"></property>
               <send>
                  <endpoint>
                     <address uri="servicr2"></address>
                  </endpoint>
               </send>
   </target>
   <target sequence="magento" />
</clone> 

【问题讨论】:

    标签: wso2esb


    【解决方案1】:

    您的突触配置与您的陈述不符。您必须使用 enrich mediator 保留原始消息,然后将 call mediator 用于您的第一个端点调用。

    然后根据结果,您将响应发送回您的客户端,并通过从保存中重新加载消息来执行发送调用。

    <api xmlns="http://ws.apache.org/ns/synapse" name="TestApi" context="/TestContext">
       <resource methods="POST GET">
          <inSequence>
             <log level="custom">
                <property name="Message Flow" value="Roovershof Plant Search API - IN"></property>
                <property name="HTTP_METHOD IS###########" expression="$axis2:HTTP_METHOD"></property>
                <property name="ip address" expression="get-property('axis2','REMOTE_ADDR')"></property>
                <property name="Authorization" expression="get-property('transport','Authorization')"></property>
             </log>
             <property name="TIME_IN" expression="get-property('SYSTEM_TIME')" scope="default" type="LONG"></property>
    
             <enrich>
                <source type="body" clone="true"></source>
                <target type="property" property="INIT_MSG_PAYLOAD"></target>
             </enrich>
             <call>
                <endpoint>
                   <address uri="service1"></address>
                </endpoint>
             </call>
             <filter source="get-property('axis2', 'HTTP_SC')" regex="201">
                <then>
                   <clone continueParent="true">
                      <target>
                         <sequence>
                            <respond></respond>
                         </sequence>
                      </target>
                      <target>
                         <sequence>
                            <enrich>
                               <source type="property" clone="true" property="INIT_MSG_PAYLOAD"></source>
                               <target type="body"></target>
                            </enrich>
                            <property name="REST_URL_POSTFIX" scope="axis2" action="remove"></property>
                            <property name="messageType" value="application/json" scope="axis2"></property>
                            <property name="HTTP_METHOD" value="POST" scope="axis2"></property>
                            <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2" type="STRING"></property>
                            <property name="OUT_ONLY" value="true" scope="default" type="STRING"></property>
                            <send>
                               <endpoint>
                                  <address uri="servicr2"></address>
                               </endpoint>
                            </send>
                         </sequence>
                      </target>
                   </clone>
                </then>
                <else>
                   <respond/>
                </else>
             </filter>
          </inSequence>
       </resource>
    </api>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      • 1970-01-01
      • 1970-01-01
      • 2017-02-07
      • 1970-01-01
      相关资源
      最近更新 更多