Hexabaseはエンタープライズ向けのBaaS(Backend as a Service)を提供しています。主な機能としてはデータベース、ファイルストレージ、認証、リアルタイム通信などを提供しています。
データベースに関連した機能として紹介したいのがWebhookです。作成時、更新時などに指定したURLに対してPOSTリクエストを行う機能になります。システム連携に使えるでしょう。
今回はそのWebhookの使い方を解説します。
開発者機能を有効にしてください
Webhookを使う場合には、Hexabaseの個人設定で 開発者向け機能
を有効にします。
Webhookを開く
データの詳細を開き、メニューの設定を開きます。
その中にWebhookという項目があります。そして、Webhookを追加するボタンを押して、Webhookを受け取るURLを指定します。
Webhookの仕組み
データを更新したりすると、指定したURLに対してPOSTリクエストが実行されます。GETではないので注意してください。
リクエストは Content-Type: application/json
で、ボディは以下のようなデータになります。
{
"data": {
"u_id": "62bac0fd2c87b9c2bf23a313",
"user_name": "goofmint",
"email": "user@example.com",
"updated_by": "goofmint",
"updated_at": "2023/01/28 03:07:07",
"created_by": "demo",
"created_at": "2022/11/09 05:54:34",
"p_id": "636affb311092f02affd3adc",
"d_id": "636affd3a011d2ae2bbfe1af",
"d_disp_id": "Memo",
"i_id": "636b409aff578b5690a6ebf2",
"title": "",
"status_id": "636affd3f9600ccdf8842fa8",
"statuses": {
"636affd3f9600ccdf8842fa7": {
"color": "",
"name": "ステータス2",
"order": 1,
"s_id": "636affd3f9600ccdf8842fa7",
"status_id": "Status2"
},
:
},
"history_id": "63d4915b79c48dc6622cea96",
"trans_id": "63d4915b79c48dc6622cea8f",
"fields_data": {
"Title": {
"f_id": "636affd3f9600ccdf8842fa3",
"display_id": "Title",
"value": "テストの編集",
"uncommitted_value": "テストの編集",
"field_name": "タイトル",
"data_type": "text"
},
:
"photo": {
"f_id": "636b010511092f02affd3af4",
"display_id": "photo",
"value": [
{
"_id": "636b409bf9600ccdf8845c9f",
"file_id": "636b409bf9600ccdf8845c9f",
"display_order": 0,
"d_id": "636affd3a011d2ae2bbfe1af",
"datastore_id": "636affd3a011d2ae2bbfe1af",
"w_id": "62bac0f0a65b33ec0c212a67",
"p_id": "636affb311092f02affd3adc",
"i_id": "636b409aff578b5690a6ebf2",
"temporary": true,
"deleted": false,
"filename": "test (4).png",
"filepath": "AfWf1291RQKA17kmSnkDpCxnlKrjyXGKbvcDOf3yLHXPdtF8cHT1B3VbdM920lO9NNLloQchh74d98fb5YaswULdGTfG5baGy1VVOvmzXvbFgKUboYmjymFlkyvzMGABRjbS4Jw0dFvQrsjmuu0xvK4Mq88KGXF9DteUEGDFhuJKPAm8wy5kd8oRscjAH5srZRxJ3j241IVOgCvOLBP0ztVgFeDx0Sm8qk12nU4ulhBskrUgZPdo9OJSKdOr7zQ",
"item_id": "636b409aff578b5690a6ebf2",
"contentType": "image/png",
"selfLink": "linkerprodstorage/AfWf1291RQKA17kmSnkDpCxnlKrjyXGKbvcDOf3yLHXPdtF8cHT1B3VbdM920lO9NNLloQchh74d98fb5YaswULdGTfG5baGy1VVOvmzXvbFgKUboYmjymFlkyvzMGABRjbS4Jw0dFvQrsjmuu0xvK4Mq88KGXF9DteUEGDFhuJKPAm8wy5kd8oRscjAH5srZRxJ3j241IVOgCvOLBP0ztVgFeDx0Sm8qk12nU4ulhBskrUgZPdo9OJSKdOr7zQ",
"mediaLink": "/storage/linkerprodstorage/AfWf1291RQKA17kmSnkDpCxnlKrjyXGKbvcDOf3yLHXPdtF8cHT1B3VbdM920lO9NNLloQchh74d98fb5YaswULdGTfG5baGy1VVOvmzXvbFgKUboYmjymFlkyvzMGABRjbS4Jw0dFvQrsjmuu0xvK4Mq88KGXF9DteUEGDFhuJKPAm8wy5kd8oRscjAH5srZRxJ3j241IVOgCvOLBP0ztVgFeDx0Sm8qk12nU4ulhBskrUgZPdo9OJSKdOr7zQ",
"size": 2300,
"field_id": "photo",
"created_at": "2022-11-09T05:54:35.801Z",
"name": "test (4).png",
"timeCreated": "2022-11-09T05:54:35.801Z",
"updated": "2022-11-09T05:54:35.799Z",
"user_id": "6350e1788d7ca2807f7be102"
},
],
"field_name": "写真",
"data_type": "file"
}
},
"field_changes": [
{
"f_id": "636affd3f9600ccdf8842fa3",
"field_name": "タイトル",
"field_datatype": "text",
"old_val": null,
"new_val": "テストの編集",
"logged_at": "2023/01/28 03:07:07"
}
],
"releated_databases": [],
"status_actions": {
"ステータス2ヘ進める": {
"_id": "636affd3f9600ccdf8842fac",
"a_id": "636affd3f9600ccdf8842fac",
"access_keys": [
"636affb3f9600ccdf8842f94",
"636affb3f9600ccdf8842f96"
],
"created_at": "2022-11-09T01:18:11.441Z",
"d_id": "636affd3a011d2ae2bbfe1af",
"description": "",
"display_id": "MoveToStatus2",
"display_order": 0,
"is_status_action": true,
"name": "ステータス2ヘ進める",
"operation": "2",
"p_id": "636affb311092f02affd3adc",
"set_status": "636affd3f9600ccdf8842fa7",
"slack_channels": null,
"status_id": "636affd3f9600ccdf8842fa8",
"updated_at": "2022-11-09T01:18:11.441Z",
"user_slack_channels": null,
"w_id": "62bac0f0a65b33ec0c212a67"
}
},
"db_actions": {
"このデータを削除する": {
"_id": "636affd3f9600ccdf8842fb1",
"a_id": "636affd3f9600ccdf8842fb1",
"access_keys": [
"636affb3f9600ccdf8842f94",
"636affb3f9600ccdf8842f96"
],
"created_at": "2022-11-09T01:18:11.59Z",
"d_id": "636affd3a011d2ae2bbfe1af",
"description": "",
"display_id": "DeleteItem",
"display_order": 0,
"isOwnedBySystem": true,
"is_status_action": false,
"name": "このデータを削除する",
"operation": "3",
"p_id": "636affb311092f02affd3adc",
"set_status": "",
"slack_channels": null,
"updated_at": "2022-11-09T01:18:11.59Z",
"user_slack_channels": null,
"w_id": "62bac0f0a65b33ec0c212a67"
},
"コピーして新規登録する": {
:
},
:
}
},
"env_vars": {
:
}
}
これらのデータを使って自社システムなどと連携できます。
まとめ
同様の機能としてアクションスクリプトがあります。こちらはコードをHexabaseサーバー上に保存して、サーバーレスで実行できる機能です。言語はNode.js限定になります。
アクションスクリプトとWebhookのどちらが良いかは業務要件によって異なるでしょう。アクションスクリプトはあまり長い処理には不向きなので、短時間で終われるものがお勧めです。
サーバーレスな業務システム開発を実現するために、Hexabaseをご利用ください。