HTTP コネクタ

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

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

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

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 クライアントを宣言しない場合、要求を送信するたびに 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>

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

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 要求設定リファレンスを参照してください。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub