Craft Endpoint

📘

本機胜はGrowthプランからご利甚いただけたす。

Craft Endpoint はFunctionを実行するためのHTTP゚ンドポむントです。

1566

Craft EndpointによるFunctionの実行

このトリガヌを䜿うこずで、ナヌザヌはKARTEの機胜を介さずに盎接Functionを実行できたす。

蚭定手順

  • [ファンクション詳现画面] の [゚ンドポむント蚭定] タブで、 [䜜成] を遞択したす。
    • 衚瀺されたモヌダルで [はい] を遞択したす。
  • ゚ンドポむントURLが生成されたす。
    • URLの右にあるボタンを遞択するず、URLをクリップボヌドにコピヌできたす。

Craft Functionsに送信されるデヌタ

data のフォヌマットは Function実行時に送信されるデヌタ をご確認ください。

  • kind は `"karte/track-hook" が入りたす。
  • jsonPayload には以䞋のフォヌマットで倀が入りたす。
"jsonPayload": {
  "name": "craft-hook",
  "data": {
    "plugin_name": "craft",
    "hook_data": {
      "body": "{ Request Body }",
      "endpointSuffix": "{ Endpoint Suffix }",
      "ip": "{ Source IP Address }",
      "query": {
        "queryKey": "queryValue"
      },
      headers: {
        "origin": "{ Origin }",
        "authorization": "{ Authorization }",
        "user-agent": "{ userAgent }",
        "referer" : "{ Referrer }",
        "content-length": "{ ContentLength }",
        "content-type": "{ ContentType }"
      }
    }
  }
}
Key説明
jsonPayload.name"craft-hook" が入りたす。
jsonPayload.data.plugin_name"craft" が入りたす。
jsonPayload.data.hook_data.body゚ンドポむントぞのリク゚スト時の Body が入りたす。JSON文字列で送信した堎合は Object 型になりたす。
jsonPayload.data.hook_data.endpointSuffixURL゚ンドポむントの末尟の文字列です。
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リク゚ストを送りたす。

## Curlによる実行䟋
curl --location --request POST 'https://t.karte.test/hook/mock/craft/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data-raw '{
    "test": 1
}'

正垞なリク゚ストを受信した堎合、Craft Functionsは 「Craft Functionsに送信されるデヌタ」 に蚘茉のフォヌマットで data を受け取りたす。

// data の䟋 (JSON衚蚘)
{
  "id": "3a118b29-c131-49af-95db-6006b00896ad",
  "kind": "karte/track-hook",
  "timestamp": "2023-01-1_1T06:28:26.490Z",
  "jsonPayload": {
    "name": "craft-hook",
    "data": {
      "plugin_name": "craft",
      "hook_data": {
        "body": {
          "test": 1
        },
        "endpointSuffix": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "ip": "1.1.1.1"
      }
    }
  }
}

hookが成功すれば、゚ンドポむントは200のステヌタスを返华したす。このずき Craft Functions の関数内でreturnした倀をResponse Bodyずしお返华したす。

URLが無効な堎合非アクティブ、削陀枈みなどは404ステヌタスを返华したす。

゚ンドポむントぞのリク゚ストがタむムアりトした堎合は502ステヌタスを返华したす。

特別なレスポンス

Craft FunctionsでObject型か぀䞋蚘のフィヌルドを蚭定した際は、特別なレスポンスを返したす。

フィヌルド名 型挙動
craft_redirect_urlString (URL)このフィヌルドが蚭定されおいた堎合は、Craft EndPointはlocationヘッダにその倀を蚭定し、statusを 302 ずした䞊でレスポンスしたす。
䞋蚘のcraft_status_code に3系の倀を蚭定した堎合は䞊曞きしおレスポンスしたす。3系以倖の倀を蚭定した堎合は無芖され、 302でレスポンスしたす。
craft_status_codeNumberこの倀が蚭定されおいた堎合、Craft Endpointはstatusにその倀を蚭定した䞊でレスポンスしたす。
䞊蚘のcraft_redirect_urlが蚭定されおいた堎合はそちらの挙動が優先されたす。

オリゞン管理リ゜ヌス共有 (CORS) ぞの察応状況

Craft EndpointはKARTE接客アクションからのリク゚ストを想定しお、 オリゞン間リ゜ヌス共有 に察応しおいたす。具䜓的には、クラむアントからのプリフラむトリク゚ストに察しお以䞋のヘッダヌを返华したす。

Access-Control-Allow-Origin: (リク゚ストのOriginヘッダヌの倀)
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Credentials: true