HTTPリクエストをワークフローに送信する
外部ウェブサーバー、APIエンドポイント、およびURLにHTTPリクエストを送信するワークフローを作成します。たとえば、メッセージングサービスへのメッセージの送信や、プロジェクト管理アプリでのアイテムの作成を実行するワークフローを作成できます。
HTTPリクエストは、以下のHTTPメソッドをサポートできます。
- Get - サーバーからの情報に関するリクエストを送信します。
- Delete - サーバーからリソースを削除します。
- Head - サーバーのHTTPレスポンスヘッダーを取得します。
- Options - サーバーでサポートされているオプションと機能を取得します。
- Patch - サーバー上のリソースを部分的に更新します。
- Put - サーバー上のリソースを更新します。
- Post - サーバー上のリソースを作成するか、置き換えます。
回答コード
Flowは、HTTPリクエストを送信してから最大で30秒間、アプリからのHTTPステータスコードによる応答を待ちます。Flowは、30秒が経過してもアプリからの応答が得られない場合、アプリとの接続を閉じ、リクエストを再送します。
Flowは、応答を受け取ると、次のようにコードを処理します。
ステータスコード | Flowがステータスコードを処理する方法 |
---|---|
200 Success | Flowは、POSTリクエストがアプリによって処理されたものと判断します。 |
202 Success | Flowは、POSTリクエストがアプリによって承諾されたものと判断します。 |
4XX Client errors |
アプリがRetry-Afterヘッダーを使用せずに429 (過剰なリクエスト) ステータスコードを送信した場合、Flowは、間隔を増やしながら、最大24時間にわたってHTTPリクエスト (POST) を再送します。 アプリが (待機時間を指定する) Retry-Afterヘッダーを使用して429 (過剰なリクエスト) ステータスコードを送信した場合、Flowは、その待機時間 (秒単位) が経過してからHTTPリクエスト (POST) を再送します。
アプリがその他の4XXコードを送信した場合、Flowは、障害が発生したものと判断し、POSTリクエストを再送しません。 |
5XX Server errors | Flowは、間隔を増やしながら、最大24時間にわたってHTTPリクエスト (POST) を再送します。 |
その他のステータスコード | この表に記載されていないコードをアプリが返した場合、Shopify Plusは、障害が発生したものと判断し、POSTリクエストを再送しません。 |
セキュリティ
HTTPリクエストを可能な限り安全に行うために、次のベストプラクティスに従うことをおすすめします。
- HTTPアクションのURL設定フィールドのパスセクションにあるLiquid変数に
| url_encode
を追加します。リクエストを受信するウェブサーバーは、URLのデコードをサポートしている必要があります。
たとえば、HTTPアクションのURL設定フィールドのパスセクションで、Liquid変数に次のフォーマットを使用します。
https://example.com/customer/create?first_name={{ customer.firstName | url_encode }}&last_name={{ customer.lastName | url_encode }}
- HTTPアクションの本文設定フィールドの本文セクションで使用されている各テンプレート変数に
| url_encode
または| json
を追加します。リクエストを受信するウェブサーバーは、URLまたはJSONのデコードをサポートしている必要があります。
たとえば、Content-Type application/x-www-form-urlencoded header
の場合は、このフォーマットで| url_encode
を使用します。
{
"first name": "{{customer.firstName | url_encode}}",
"last name": "{{customer.lastName | url_encode}}"
}
Content-Type application/json header
の場合は、このフォーマットで| json
を使用します。
{
"first name": {{customer.firstName | json}},
"last name": {{customer.lastName | json}}
}
制限事項
このHTTPリクエストアクションと、Flowコネクターで作成されるアプリアクションを混同しないでください。どちらの機能もHTTPリクエストを送信しますが、両者には違いがあります。例えば、このアクションで送信されるHTTPリクエストには、ヘッダーにaction_run_id
が含まれません。
このアクションは、202ステータスコードを、リクエストが処理されたものとして扱うことは、既知の問題です。
HTTPリクエストを送信する
- ワークフローで、[アクションを追加する] をクリックします。
- [HTTPリクエストを送信する] を選択します。
-
HTTPメソッドセクションで、以下の手順に従ってフィールドに入力します。
- HTTPメソッドのうちの1つを選択します。
- URLフィールドに、サーバーのURLを入力します。
- オプション: APIに情報を加える際に、URLに追加する情報が必要な場合は、以下の手順を実行します。 - APIを使用してヘッダー内の情報が必要な場合は、ヘッダーの表でパラメーターを指定してURLに加えます。APIを使用してヘッダーまたはURLパスのいずれかに情報を追加できる場合は、ヘッダーを使用します。このオプションによって、URLパスに情報を追加するよりも高い安全性を保てます。
- APIを使用してURLパスの情報が必要な場合は、URLのパス部分にテンプレート変数を追加します。URLのパス部分とは、3つ目のスラッシュの後にある部分のことです。たとえば、
https://shopify.com/{{ order.id | url_encode }}
というURLのパス部分は{{ order.id | url_encode }}
です。
ヘッダーフィールドに、キーと値のペアを追加します。キーまたは値にテンプレート変数を追加することもできます。
本文フィールドに、サーバーに送信するコンテンツを追加します。メッセージを送信する場合は、メッセージにお客様、注文、商品の詳細を含めておくと役立ちます。詳細を含めるには、テンプレート変数を使用する必要があります。
[保存] をクリック