HTTPエンドポイントから実行する(旧エンドポイント)
Craft Endpoint はファンクションを実行するためのHTTPエンドポイントです。
このトリガーを使うことで、ユーザーはKARTEの機能を介さずに直接ファンクションを実行できます。
設定手順
- [ファンクション詳細画面]の[エンドポイント設定]タブで、[作成]を選択します。
- 表示されたモーダルで[はい]を選択します。
- エンドポイントURLが生成されます。
- URLの右にあるボタンを選択すると、URLをクリップボードにコピーできます。
Craft Functionsが受け取るデータ
dataのフォーマットは イベント駆動タイプのファンクションが受け取るデータ をご確認ください。
kind
は `“karte/track-hook” が入ります。jsonPayload
には次のフォーマットで値が入ります。
Key | 説明 |
---|---|
jsonPayload.name | "craft-hook" が入ります。 |
jsonPayload.data.plugin_name | "craft" が入ります。 |
jsonPayload.data.hook_data.body | エンドポイントへのリクエスト時の Body が入ります。JSON文字列で送信した場合は Object 型になります。 |
jsonPayload.data.hook_data.endpointSuffix | URLエンドポイントの末尾の文字列です。 |
jsonPayload.data.hook_data.ip | エンドポイントにリクエストを行ったクライアントのIPアドレスです。 |
jsonPayload.data.hook_data.query | リクエスト時のクエリパラメータです。Key-Value形式にパースされます。 |
jsonPayload.data.hook_data.headers.origin | エンドポイントへのリクエスト時のOriginヘッダーの値が入ります。この要素はリクエストにOriginヘッダーが含まれる場合のみ存在します。 |
jsonPayload.data.hook_data.headers.authorization | エンドポイントへのリクエスト時のAuthorizationヘッダーの値が入ります。この要素はリクエストにAuthorizationヘッダーが含まれる場合のみ存在します。 |
jsonPayload.data.hook_data.headers.user-agent | エンドポイントへのリクエスト時のUser Agentヘッダーの値が入ります。この要素はリクエストにUse rAgentヘッダーが含まれる場合のみ存在します。 |
jsonPayload.data.hook_data.headers.referrer | エンドポイントへのリクエスト時のReferrerヘッダーの値が入ります。この要素はリクエストにReferrerヘッダーが含まれる場合のみ存在します。 |
jsonPayload.data.hook_data.headers.content-length | エンドポイントへのリクエスト時のContent Lengthヘッダーの値が入ります。この要素はリクエストにContent Lengthヘッダーが含まれる場合のみ存在します。 |
jsonPayload.data.hook_data.headers.content-type | エンドポイントへのリクエスト時のContent Typeヘッダーの値が入ります。この要素はリクエストにContent Typeヘッダーが含まれる場合のみ存在します。 |
ファンクションの実行方法
URLエンドポイントにPOST
あるいはGET
リクエストを送ります。
正常なリクエストを受信した場合、Craft Functionsは「Craft Functionsが受け取るデータ」に記載のフォーマットで data
を受け取ります。
- ファンクションの処理が完了すると、エンドポイントは200のステータスを返却します。
- このとき、エンドポイントはファンクションの関数内で
return
した値をResponse Bodyとして返却します。
- このとき、エンドポイントはファンクションの関数内で
- URLが無効な場合(非アクティブ、削除済みなど)は404ステータスを返却します。
- エンドポイントへのリクエストがタイムアウトした場合は502ステータスを返却します。
特別なレスポンス
Craft FunctionsでObject型かつ次のフィールドを設定した際は、特別なレスポンスを返します。
フィールド名 | 型 | 挙動 |
---|---|---|
craft_redirect_url | String (URL) | このフィールドが設定されていた場合は、Craft EndPointはlocationヘッダーにその値を設定し、statusを 302 とした上でレスポンスします。次のcraft_status_code に3系の値を設定した場合は上書きしてレスポンスします。3系以外の値を設定した場合は無視され、 302でレスポンスします。 |
craft_status_code | Number | この値が設定されていた場合、Craft Endpointはstatusにその値を設定した上でレスポンスします。上記のcraft_redirect_urlが設定されていた場合はそちらの挙動が優先されます |
オリジン間リソース共有 (CORS) への対応状況
Craft EndpointはKARTE接客アクションからのリクエストを想定して、 オリジン間リソース共有 に対応しています。具体的には、クライアントからのプリフライトリクエストに対して次のヘッダーを返却します。
FAQ
ブラウザからPOSTリクエストをしましたが、Cross Origin制約エラーになります。
POSTリクエスト時にリクエストボディを省略したり、Content-Typeに合わない形式のリクエストボディを付与すると上記エラーになることを確認しています。POSTリクエストを送る際には、Content-Typeに合うリクエストボディを付与してください。