Curl関数はどういう場合に使うか?
Integrate.io の Curl関数は、HTTP リクエストを実行し、返されたレスポンスをデータパイプラインの中で使用することができます。Curl 機能を使用して、以下のいずれかを行うことができます。- サードパーティのAPIを実行してデータを取得する:このデータは、既存のデータを充実させる(新しいフィールドを追加する)ために使用されるかもしれません。例えば、任意の信用格付けサービスのAPIを使用して、顧客の信用スコアを取得することができます。
- APIを実行して、パイプライン内のデータフィールドの値を変換する:例えば、FXのAPIを呼び出して、通貨フィールドを最新のレートに従って現地通貨に変換することができます。
- 外部APIを介してCRUD操作を実行する:例えば、CRUD操作に対応している他のサービスでは、APIを介してデータレコードを作成したり、変更したりすることができます。
Curl関数の使い方
Curl 関数は、任意のフィールド式で使用できる関数のセットを通して利用することができます。ここに例を示します。
base_urlはAPIのホストアドレスを格納するパッケージ変数です。適切な引数とともにCurlと呼ばれる関数を呼び出してHTTP GETリクエストを行い、レスポンスという名前でエイリアスを付けて返された結果を格納します。
レスポンスは、Integrate.io関数を使用してさらに解析することができます。例えば、エンドポイントがJSON形式の文字列を返す場合、
JsonStringToMap(response)#'life_time_value' という式を使って、JSONレスポンスからlife_time_valueフィールドを抽出することができます。
Curl関数と利用例
このセクションでは、Curl 機能のさまざまな機能について詳細に説明し、いくつかのユースケースを見ていきます。Simple HTTP Requests
Curl 関数は、HTTP リクエストを準備して実行するための基本的な機能をすべて提供します。関数のシグネチャは次のようになります。- url 引数にはプロトコルを指定する必要があります (http と https の両方がサポートされています)。
- HTTP methodは、GET、PUT、POST、DELETEのいずれかを指定することができます。
- headersは、JSON オブジェクトに似たキー-バリュー形式で指定できます。
- request_body は、生の文字列形式で渡すことができます。
- 最後に、Basic認証用にusernameとpasswordを指定できます。
- status - HTTP レスポンスコード
- body - 生の文字列形式のレスポンスボディ
- headers - レスポンスヘッダのマップオブジェクト
ページングされたリクエスト
CurlWithPagination 関数を使用すると、ページングされた API に対して複数の HTTP リクエストを行い、サーバーからのレスポンスを収集することができます。これは、データをフェッチする API にページングなしでは転送できないデータがたくさんある場合に有効です。 以下が CurlWithPagination 関数の関数シグネチャです。pagination_schemeの値をサポートしています。
- Automatic (デフォルト):Integrate.ioはドメインごとにページネーション方式を検出します。ページネーションをサポートしているドメインのリストはこちらのリンクでご確認いただけます。Integrate.ioに他のエンドポイントのページネーションをサポートさせたい場合は、遠慮なくサポートに連絡してください。
- NoPagination: この関数をCurl関数と同じように動作させます。
- LinkHeader:Integrate.ioはRFC 5988の仕様に従ってページをフェッチします。
Polling the API
CurlPoll 関数を使用すると、正規表現にマッチするか、指定されたタイムアウトリミットに達するまで連続的に HTTP リクエストを行うことができます。この関数は、ステータスの変更やエンドポイントからのレスポンスを待つ必要がある非同期タスクで特に便利です。例えば、注文のサマリーレポートをトリガーするエンドポイントがあり、そのエンドポイントのデータ処理は非同期的に行われるとします。このようなAPIは通常、頻繁にポーリングできるステータス/最終レスポンスを取得するためのエンドポイントを持っています。 これが関数のシグネチャです。バイナリ形式のレスポンスの取得
BinaryCurl 関数は、バイナリ形式のレスポンスを返す HTTP リクエストを作成するために使用されます。この関数は、API がファイルを返す場合に特に便利です。例えば、API が圧縮された .gz ファイルを返す場合、File Storage Destination コンポーネントを使用してディスクに書き込むことができます。 BinaryCurl 関数のシグネチャは Curl 関数と全く同じです。Integrate.ioのConnectionを使用した認証
CCurlメソッドは、Integrate.io connectionを使用して認証されたリクエストを行うために使用します。この機能は、Integrate.io接続を定義できるサービスの認証を簡素化するのに役立ちます。例えば、新規注文を作成するためにShopifyストアにHTTPリクエストを行いたい場合、Shopifyコネクションを定義し、それを使用してCurl関数で自分で認証を処理するのではなく、それ自身で認証を処理することができます。 こちらがCCurlのシグネチャーです。my_connection_12 はダッシュボードのConnectionの画面で見ることができるコネクション ID のことです。CCurl 関数の戻り値は Curl 関数の戻り値と全く同じです。
その他の機能
前に説明した機能を組み合わせて、Integrate.io接続での認証を可能にする機能がいくつかあります。- CCurlWithPagination: 認証のために Integrate.ioで定義されたコネクションを使用している間、ページングされたリクエストを行うために使用します。
- CCurlPoll: 認証のために Integrate.ioで定義されたコネクションを使用している間にポーリング要求を行うために使用します。
- BinaryCCurl: Integrate.ioで定義されたコネクションを使用しているときに使用します。 認証のために Integrate.io 接続を使用しているときに、Binary を返すリクエストを作成するために使用します。
比較表: Integrate.io Curl 関数とユースケースまとめ
ユースケースに適した関数を選択するために、次の表を参照してください。| Make HTTP request | Basic Auth | Auth using Integrate.io connections | Retrieve Binary Data | Handle Paginated data | Poll response | |
|---|---|---|---|---|---|---|
| Curl | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| BinaryCurl | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ |
| CurlWithPagination | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ |
| CurlPoll | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| CCurl | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| BinaryCCurl | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ |
| CCurlWithPagination | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ |
| CCurlPoll | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ |