HTTPリクエストを送信する
「HTTPリクエストを送信する」アクションは、ワークフローをウェブサーバーまたはURLに接続し、HTTPリクエストを送信します。
FlowがHTTPリクエストを送信すると、最大30秒間、HTTPレスポンスコードを待機します。30秒経ってもFlowが応答を受信しない場合、アプリへの接続を閉じて、後でリクエストを再試行します。
フィールド
「HTTPリクエストを送信する」アクションには、次のフィールドが含まれています。
| フィールド | 説明 |
|---|---|
| HTTPメソッド | 送信するHTTPリクエストのメソッドです。 HTTPリクエストを送信する このアクションでは、以下のメソッドがサポートされています。
|
| URL | HTTPリクエストの送信先となるサーバーのURLです。 |
| ヘッダー | HTTPリクエストのキーと値のペアです。複数のキーと値のペアを入力できます。 |
| ボディ | サーバーに送信されるコンテンツです。 |
| クライアントエラー (4XX応答) 時 | クライアントエラーを示す レスポンスコード を受信すると、Flowは以下のように動作します。
|
| サーバーエラー (5XXまたは429応答) 時 | クライアントエラーを示す レスポンスコード サーバーエラーが示された場合、Flowは以下のように動作します。
|
返されるデータ
このアクションに続くステップで返されたデータにアクセスするには、sendHttpRequestという名前の変数を使用します。この変数には、HTTP応答のすべての詳細が含まれています。オプションで、以下の例のように、「コードを実行する」アクションを使用して応答のbodyを解析し、後続のワークフローステップで使用することもできます。
1 つのワークフローでHTTPリクエストを送信アクションが複数回使用される場合、変数名に数字が追加されます。たとえば、HTTPリクエストを送信アクションを 2 回使用するワークフローでは、返されたデータの最初の変数は sendHttpRequest で、2 番目の変数は sendHttpRequest1 になります。この名前はカスタマイズできません。
レスポンスコード
次の表では、Flowが応答を受信した後にHTTPレスポンスコードをどのように処理するかについて説明します。
| HTTPレスポンスコード | Flowによるレスポンスコードの処理方法 |
|---|---|
| 2XXまたは3XX成功 | FlowはHTTPリクエストを成功としてマークし、ワークフローで後続のアクションを実行します。 |
| 4XXエラー 5XXおよび429エラー | アクションの設定に応じて、Flowは次のいずれかの処理を行います。
|
| その他のレスポンスコード | この表に記載されていないコードが応答で返された場合、またはアクションの再試行中にタイムアウトした場合、FlowはHTTPリクエストを失敗としてマークし、ワークフローの実行を失敗させます。後続のワークフローアクションは実行されません。 |
シークレット
シークレットは、アクセストークンやパスワードなど、HTTPリクエストを送信アクションで使用する機密情報を安全に保存するために使用されます。シークレットは、Flow > 設定 ページから作成および管理されます。シークレットには、ハンドル、値、説明が含まれます。シークレットは、Liquid変数 ({{secrets.handle}} など) として参照するか、URL、ヘッダー値、本文フィールドを設定する際にシークレットを追加オプションから参照します。シークレットの値が Flow のインターフェイスに表示されることはなく、ワークフローの実行ログからも秘匿化されます。
トリガー
「HTTPリクエストを送信する」アクションは、どのワークフローでも使用できます。
例
例1:外部サービスにHTTPリクエストを送信する
この例では、Flowを使用して外部サービスにHTTPリクエストを送信します。
始める前に、テスト用にHTTPリクエストを受信してそのリクエストのデータを保存するウェブサービス (たとえばRequest Catcherなど) を設定します。パスワードやAPIキーなどの機密データを外部サービスに送信する際は、注意が必要です。
手順:
- 商品のステータスが更新されましたトリガーを選択します。これにより、商品のステータスを変更してこのワークフローをテストできます。
- ワークフローに 「HTTPリクエストを送信する」 アクションを追加してトリガーに接続します。次に、 「HTTPリクエストを送信する」 ステップをクリックして設定パネルを開きます。
- [HTTPメソッド] フィールドに、
POSTと入力します。 - [URL] フィールドに、
https://yourFlowTest.requestcatcher.com/testのように、テスト対象の URL を入力します。 - [ヘッダー] セクションで、[キー] を
Content-Type、[値] をtext/plainとしてヘッダーを入力します。 - [本文] セクションで、トリガーから商品のタイトルと更新されたステータスを送信するために、
{{product.title}}と{{product.status}}を入力します。
- [HTTPメソッド] フィールドに、
- ワークフローを有効化します。
- 商品のステータスを下書きから有効に変更するなどして、テストします。
- この例では
https://yourFlowTest.requestcatcher.com/のような外部テストサービスで結果を確認します。
例2:コードを実行を使用して HTTP 応答を解析する
この例では、Flow を使用して外部サービスに HTTP リクエストを送信し、コードを実行アクションを使用して HTTP 応答の body を解析し、後続のワークフローステップで使用します。
開始する前に、Postman Echo のように、HTTP リクエストを受信してデータを返すウェブサービスを選択してください。パスワードや API キーなどの機密データを外部サービスに送信する際は、注意が必要です。
手順:
商品のステータスが更新されましたトリガーを選択します。これにより、商品のステータスを変更してこのワークフローをテストできます。
ワークフローに「HTTPリクエストを送信する」アクションを追加し、トリガーに接続します。次に、「HTTPリクエストを送信する」ステップをクリックして設定パネルを開きます。
[HTTPメソッド] フィールドに、
POSTと入力します。[URL] フィールドに、
https://postman-echo.com/postのように、テスト対象の URL を入力します。[ヘッダー] セクションで、[キー] を
Content-Type、[値] をapplication/jsonとしてヘッダーを入力します。[本文] セクションに、次のように、ワークフローに返す JSON の例を入力します。
{ "productTitle": "{{product.title}}", "productStatus": "{{product.status}}" }
ワークフローに「コードを実行」アクションを追加し、「HTTPリクエストを送信する」アクションに接続します。次に、「コードを実行」ステップをクリックして設定パネルを開きます。
[入力を定義] フィールドに、次のように、
sendHTTPrequestオブジェクトによって返されるbodyを含めます。query{ sendHttpRequest { body } }[出力を定義] フィールドで、次のように、出力スキーマを定義します。
type Output { productTitle: String! productStatus: String! }[コードを記述] フィールドで、
JSON.parseメソッドを使用して応答を解析し、返すデータが出力スキーマで定義した形と型に一致することを確認します。たとえば、次のようになります。export default function main(input) { const body = JSON.parse(input.sendHttpRequest.body); console.log("body is", body); return { productTitle: body.data.productTitle, productStatus: body.data.productStatus } }
ワークフローに「ログ出力」アクションを追加し、「コードを実行」アクションに接続します。次に、「コードを実行」ステップをクリックして設定パネルを開きます。
[出力] フィールドに、次のように、「コードを実行」ステップによって返される変数を含めます。
Title from HTTP response: {{runCode.productTitle}} Status from HTTP response: {{runCode.productStatus}}
ワークフローを有効化します。
商品のステータスを下書きから有効に変更するなどして、テストします。
Flow / 最近の実行ページで実行結果を確認し、「ログ出力」ステップの値が「HTTPリクエストを送信する」の出力から返された値と一致することを確認します。
テンプレート
フルフィルメントプロバイダーに次回の注文について通知する
Order Tagger で注文に「Warehouse」のタグが付けられたときに、フルフィルメントプロバイダーに HTTP リクエストを送信します。テンプレートを表示する
新しい注文を Airtable に送信する
注文が作成されたときに Airtable に注文を送信します。テンプレートを表示する
既存のすべての商品と新しい商品を Airtable に送信する
10分ごとに、(タグによって) Airtable に送信されていない商品を検索し、Airtable に送信します。テンプレートを表示する
Airtable に保存されている商品データから商品をバッチで更新する
Airtable に保存されている商品データから商品をバッチで更新します。テンプレートを表示する
SendGrid を使用して、有効期限が切れそうなギフトカードについてお客様に通知する
毎日、7日後に有効期限が切れるすべてのギフトカードを取得し、SendGrid を使用してお客様にメールを送信します。テンプレートを表示する
お客様がカスタムアイテムを注文したときに SendGrid を使用してメールを送信する
お客様がカスタムアイテムを注文したときに、SendGrid を使用して取引メールを送信します。テンプレートを表示する