HTTP Connector - Mule 4

サポートカテゴリ: 選択

HTTP Connector v1.5

HTTP 用 Anypoint Connector (HTTP Connector) を使用すると、要求をリスンし、フローをトリガーする HTTP サービスと、任意の HTTP サービスと通信できる HTTP クライアントを宣言できます。

HTTP Connector によって、HTTP ベースの API の効果的な公開とコンシュームが可能になります。たとえば、FAPIkit と RESTConnect はどちらも HTTP Connector を内部的に使用して API を操作します。

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

リリースノート: HTTP Connector Release Notes​ (HTTP Connector リリースノート)
Exchange: HTTP Connector

POM ファイル情報

<dependency>
  <groupId>org.mule.connectors</groupId>
  <artifactId>mule-http-connector</artifactId>
  <version>x.x.x</version>
  <classifier>mule-plugin</classifier>
</dependency>

x.x.x​ を使用しているコネクタに対応するバージョンに置き換えます。

HTTP サーバー

HTTP サーバーは、ユーザーまたはアプリケーションがコンシュームできるサービスを公開します。要求の形式で データを受信し、応答を返します。コネクタの場合、 これは、要求を受信したらフローをトリガーし、フローが完了したら応答することを意味します。これはすべて、コネクタが提供するソースである HTTP リスナーによって処理されます。

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

次に例を示します。

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

この例では、HTTP リスナー設定の名前は ​serverConfig​ です。 これが、コンピューターの localhost アドレス (IP address ​127.0.0.1​) とポート ​8081​ 上でリスンします。 Anypoint Studio または Design Center でサーバーを選択したら。 ​http://localhost:8081​ URL でこのサーバーにアクセスできます。

サーバーを詳細に設定してフローを実行するための具体的なリソースパスを選択できます。 そのパスと一致する要求を受信すると、Mule はフローを実行します。

次の例を考えてみましょう。

<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>

これらの例では、2 つの HTTP リスナーが、​localhost​ とポート ​8081​ 上に HTTP サーバーを作成した、 以前の設定 ​serverConfig​ を使用するようにセットアップされています。 トリガーされるパスに応じて、異なるフローが実行されます。

そのため、​http://localhost:8081/greet​ をコールすると ​Hello, world!​ が返され、​http://localhost:8081/exit​ をコールすると ​Goodbye, world!​ が返されます。

受信した要求データは、実行時にフローと共有され、応答は カスタマイズできます。

次の例は、受信 HTTP 要求クエリパラメーターを使用して、HTTP 応答の本文をカスタマイズします。

<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://localhost:8081/greet?name=Ana​ をコールすると ​Hello, Ana! I am an HTTP server.​ が返され、​http://localhost:8081/greet​ をコールすると ​Hello, world! I am an HTTP server.​ が返されるます。

HTTP リスナー機能の概要全体は、​HTTP リスナー設定リファレンス​を参照してください。

HTTP クライアント

HTTP クライアントを使用すると、要求を HTTP サービスに送信し、その応答を処理できます。コネクタの場合、 これはつまり、要求を実行して応答を返すということです。この処理は、 コネクタが提供する操作の HTTP 要求によって実行されます。

HTTP クライアントは宣言しなくてもかまいませんが、設定を再利用できるので 宣言することをお勧めします。HTTP クライアントを宣言しない場合、要求を送信するたびに URL 全体を指定する必要があります。この設定は、簡易な要求では 便利ですが、さまざまな API リソースに対して複数の要求を実行する場合、 最適なのはクライアントを宣言して接続先のホストを指定することです。

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

この例では、HTTP 要求設定の名前は ​clientConfig​ です。 要求を ​localhost​ とポート ​8081​ (以前設定されたサーバー) に送信します。

要求を実行するために必要なのは、使用する操作ごとに移動先のパスを指定することだけです。

<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 応答の状況を使用します。

<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 要求機能の概要全体は、​HTTP 要求設定リファレンス​を参照してください。