Как реализовать интерфейс обратного вызова с использованием REST API с операцией GET в Mule? - PullRequest
0 голосов
/ 21 марта 2019

Как реализовать интерфейс обратного вызова с использованием REST API с операцией GET в Mule?Любой справочный пример с Mule приветствуется

1 Ответ

0 голосов
/ 22 марта 2019

Вот шаги с примером кода (с несколькими предположениями, указанными в конце):

  1. создать отображение RAML в src/main/api вашего * проекта:
      #%RAML 0.8
      ---
      title: sample
      /YourServiceEndpoint
        get:
          responses:
            200:
              body:
                application/json:
  1. Используйте APIKit Router в Mule, чтобы создать отображение в src/main/app. При этом используется GET в соответствии с вопросом (вы можете заменить POST или любым другим действием REST при написании интеграционных тестов для вашего варианта использования):
    <!-- /api/v1 is defined in the APIKit configuration -->
    <flow name="get:/api/v1/YourServiceEndPoint">
        <http:inbound-endpoint exchange-pattern="request-response" connector-ref="HTTP_HTTPS" ref="HTTP" doc:name="HTTP"/>
        <apikit:router config-ref="APIKitRouter" doc:name="APIkit Router"/>
        <exception-strategy ref="Standard_Error_Responses" doc:name="Reference Exception Strategy"/>

        <!-- do all other stuff here; for example -->
        <when expression="#[payload.containsKey(&quot;resultSet1&quot;) &amp;&amp; payload.get(&quot;resultSet1&quot;).size() &gt; 0]">
           <set-payload value="#[payload.get(&quot;resultSet1&quot;).get(0)]" doc:name="Set Payload"/>
           <json:object-to-json-transformer doc:name="Object to JSON"/>
        </when>
    </flow>
  1. Выше connector-ref требует, чтобы ваша глобальная конфигурация (скорее всего, определенная как global-configuration.xml в вашем проекте) имела фрагмент конфигурации, подобный следующему:
    <https:connector name="HTTPS" enableCookies="true" cookieSpec="netscape" validateConnections="true" sendBufferSize="0" receiveBufferSize="0" receiveBacklog="0" clientSoTimeout="10000" serverSoTimeout="10000" socketSoLinger="0" doc:name="HTTP\HTTPS">
        <https:tls-server path="${truststoreLocation}" storePassword="${truststorePassword}"/>
    </https:connector>

Предположения:

  1. Для APIKit Router требуется лицензия Enterprise от Mulesoft / Salesforce, в противном случае это не работает.

  2. Пути фрагментов предполагают использование Maven. Выберите Project > Mavenize, если ваш проект уже не поддерживает maven.

  3. Это всего лишь предложение и не имеет отношения к вопросу. В сценарии использования указывается «огромная нагрузка на данные», что подразумевает, что архитектура должна обрабатывать ее по-разному - вам, вероятно, следует использовать SFTP вместо HTTP / HTTPS API.

Полезные заметки:

  1. В меню «Справка» приложения есть дополнительные примеры, демонстрирующие использование SOAP, Callable интерфейса и т. Д., Которые позволят вам двигаться вперед.
...