HTTP Connector 1.7 - Mule 4

HTTP 用 Anypoint Connector (HTTP Connector) を使用すると、要求をリスンし、フローをトリガーする HTTP サービスと、任意の HTTP サービスと通信できる HTTP クライアントを宣言できます。また、HTTP ベースの API の公開とコンシュームが可能になります。たとえば、APIkit と RESTConnect はどちらも HTTP Connector を内部的に使用して API を操作します。

HTTP Connector は HTTPS (TLS) 接続もサポートしており、簡単な方法で静的リソースとセキュアなサービスを利用できるようにし、クライアント認証スキームを処理します。

互換性と修正された問題については、「HTTP Connector リリースノート」を参照してください。

始める前に

このコネクタを使用するには、以下に精通している必要があります。

  • Anypoint Connector

  • Mule Runtime Engine (Mule)

  • Mule フローの要素とグローバル要素

  • Anypoint Studio を使用した Mule アプリケーションの作成方法

アプリケーションを作成するには、Anypoint Platform および Anypoint Studio へのアクセスが必要です。

HTTP サーバー

HTTP サーバーは、ユーザーまたはアプリケーションがコンシュームできるサービスを公開します。このサーバーは要求の形式でデータを受信し、対応する応答を返します。HTTP ​Listener​ ソースは、要求を受信したらフローをトリガーし、フローが完了したら応答します。

リスナーソース接続を定義して HTTP サーバーを宣言します。この接続では、要求が受信されるホストとポートを定義します。

次の例は、HTTP ​Listener​ ソース接続の XML の例を示しています。

<http:listener-config name="serverConfig">
  <http:listener-connection host="localhost" port="8081"/>
</http:listener-config>

接続設定は ​serverConfig​ です。これはポート ​8081​ で localhost アドレス (IP アドレス ​127.0.0.1​) をリスンします。Anypoint Studio または Design Center でサーバーをセットアップしたら、​http://localhost:8081​ URL でこのサーバーにアクセスできます。

サーバーを詳細に設定するには、フローを実行するためのリソースパスを指定します。そのパスと一致する要求を受信すると、Mule Runtime Engine (Mule) はフローを実行します。

次の例は、トリガーされたパスに応じて実行される異なるフローの 2 つの HTTP ​Listener​ ソースの XML 設定を示しています。

<flow name="hello">
    <http:listener path="greet" config-ref="serverConfig"/>
    <set-payload value="Hello, world!"/>
</flow>

<flow name="bye">
    <http:listener path="exit" config-ref="serverConfig"/>
    <set-payload value="Goodbye, world!"/>
</flow>

どちらのリスナーソースも、最初の例で宣言されている接続設定 ​serverConfig​ を使用します。HTTP ​Listener​ ソースが ​Hello, world!​ によってトリガーされた場合、コネクタは ​http://localhost:8081/greet​ を返します。ソースが ​http://localhost:8081/exit​ によってトリガーされた場合、コネクタは ​Goodbye, world!​ を返します。 受信した HTTP 要求データは、実行時にフローと共有されます。HTTP 応答はカスタマイズできます。

次の例は、HTTP 応答の本文をカスタマイズする HTTP ​Listener​ ソースの XML 設定を示しています。

<flow name="hello">
  <http:listener path="greet" config-ref="serverConfig">
    <http:response>
      <http:body>
        #[payload ++ ' I am an HTTP server.']
      </http:body>
    </http:response>
  </http:listener>
  <set-payload value="#['Hello, ' ++ (attributes.queryParams.name default 'world') ++ '!']" />
</flow>

HTTP ​Listener​ ソースが ​http://localhost:8081/greet?name=Ana​ によってトリガーされた場合、コネクタは ​Hello, Ana! I am an HTTP server.​ を返します。 ソースが ​http://localhost:8081/greet​ によってトリガーされた場合、コネクタは ​Hello, world! I am an HTTP server.​ を返します。

HTTP ​Listener​ ソースについての詳細は、​「HTTP Listener ソースの設定」​を参照してください。

HTTP クライアント

HTTP クライアントを使用すると、要求を HTTP サービスに送信し、その応答を管理できます。HTTP ​Request​ 操作は、HTTP 要求を実行し、対応する回答を返します。

HTTP クライアントは宣言しなくてもかまいませんが、宣言すると設定を再利用できます。HTTP クライアントを宣言しない場合、要求を送信するときに URL 全体を毎回指定します。また、さまざまな API リソースに対して複数の要求を実行する場合は、ホストが接続するクライアントを宣言します。

次の例は、HTTP ​Request​ 操作の XML 設定を示しています。

<http:request-config name="clientConfig">
  <http:request-connection host="localhost" port="8081"/>
</http:request-config>

HTTP 要求設定は ​clientConfig​ です。要求は ​localhost​ のポート ​8081​ に送信されます。

要求を実行するには、各要求に対象パスを含める必要があります。次の例は、異なるパスが指定された 2 つの HTTP ​Request​ 操作の XML 設定を示しています。

<flow name="helloAndBye">
  <http:request method="GET" path="greet" config-ref="clientConfig"/>
  <logger level="INFO" message="#[payload]"/>
  <http:request method="GET" path="exit" config-ref="clientConfig"/>
  <logger level="INFO" message="#[payload]"/>
</flow>

要求を ​greet​ と ​exit​ に送信することで、公開されたサービスがコンシュームされます。フローが実行されると、次のように表示されます。

Hello, world! I am an HTTP server.
Goodbye, world!

応答データをフローと共有するように HTTP 要求をカスタマイズできます。次の例は、送信する要求をクエリパラメーターでカスタマイズし、受信する HTTP 応答の状況を使用する、HTTP ​Request​ 操作の XML 設定を示しています。

<flow name="fullHello">
  <http:request method="GET" path="greet" config-ref="clientConfig">
    <http:query-params>
      #[{"name" : "HTTP client"}]
    </http:query-params>
  </http:request>
  <logger level="INFO"
   message="#['Received a ' ++ attributes.statusCode ++ ' response with body: {' ++ payload ++ '}']"/>
</flow>

フローが実行されると、次のように表示されます。

Received a 200 response with body: {Hello, HTTP client! I am an HTTP server.}

HTTP ​Request​ 操作についての詳細は、​「HTTP Request 操作の設定」​を参照してください。

次のステップ

前提条件を満たしたら、​Anypoint Studio​ でアプリケーションを作成してコネクタを設定できます。