HTTPリクエストをワークフローに送信する

外部ウェブサーバー、APIエンドポイント、およびURLにHTTPリクエストを送信するワークフローを作成します。たとえば、メッセージングサービスへのメッセージの送信や、プロジェクト管理アプリでのアイテムの作成を実行するワークフローを作成できます。

HTTPリクエストは、以下のHTTPメソッドをサポートできます。

  • Get - サーバーからの情報に関するリクエストを送信します。
  • Delete - サーバーからリソースを削除します。
  • Head - サーバーのHTTPレスポンスヘッダーを取得します。
  • Options - サーバーでサポートされているオプションと機能を取得します。
  • Patch - サーバー上のリソースを部分的に更新します。
  • Put - サーバー上のリソースを更新します。
  • Post - サーバー上のリソースを作成するか、置き換えます。

回答コード

Flowは、HTTPリクエストを送信してから最大で30秒間、アプリからのHTTPステータスコードによる応答を待ちます。Flowは、30秒が経過してもアプリからの応答が得られない場合、アプリとの接続を閉じ、リクエストを再送します。

Flowは、応答を受け取ると、次のようにコードを処理します。

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リクエストを送信する

  1. ワークフローで、[アクションを追加する] をクリックします。
  2. [HTTPリクエストを送信する] を選択します。
  3. HTTPメソッドセクションで、以下の手順に従ってフィールドに入力します。

    1. HTTPメソッドのうちの1つを選択します。
    2. URLフィールドに、サーバーのURLを入力します。
    3. オプション: APIに情報を加える際に、URLに追加する情報が必要な場合は、以下の手順を実行します。 - APIを使用してヘッダー内の情報が必要な場合は、ヘッダーの表でパラメーターを指定してURLに加えます。APIを使用してヘッダーまたはURLパスのいずれかに情報を追加できる場合は、ヘッダーを使用します。このオプションによって、URLパスに情報を追加するよりも高い安全性を保てます。
    4. APIを使用してURLパスの情報が必要な場合は、URLのパス部分にテンプレート変数を追加します。URLのパス部分とは、3つ目のスラッシュの後にある部分のことです。たとえば、https://shopify.com/{{ order.id | url_encode }}というURLのパス部分は{{ order.id | url_encode }}です。
  4. ヘッダーフィールドに、キーと値のペアを追加します。キーまたは値にテンプレート変数を追加することもできます。

  5. 本文フィールドに、サーバーに送信するコンテンツを追加します。メッセージを送信する場合は、メッセージにお客様、注文、商品の詳細を含めておくと役立ちます。詳細を含めるには、テンプレート変数を使用する必要があります。

  6. [保存] をクリック

関連リンク

Shopifyで販売を開始する準備はできていますか?

無料体験を試す