HTTP コネクタ - Mule 4

サポートカテゴリ: 選択

HTTP コネクタ v1.5

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

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

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

リリースノート: ​HTTP Connector Release Notes - Mule 4​ (HTTP コネクタリリースノート)
Exchange: HTTP コネクタ

POM ファイル情報

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

Mule は、RELEASE を現在のバージョンに変換します。バージョンを指定するには、Anypoint Exchange を参照して [Dependency Snippets (連動関係スニペット)]​ をクリックします。

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.status code ++ ' response with body: {' ++ payload ++ '}']"/>
</flow>

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

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

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

Was this article helpful?

💙 Thanks for your feedback!