APIでバックエンドにアクセスする

Hexabaseのバックエンドは、Web APIでアクセスできます。

ここでは、API経由で、ToDoサンプルを呼び出してみましょう。

デモ動画#

デモ動画_Step5

用意するもの#

APIの動作を検証するには、何らかのAPI開発ツール/APIテストツールの利用がおすすめです。

各ツールの使い方は、公式サイトなどをご覧ください。

あらかじめ確認する情報#

APIを利用するには、APIのベースURIとアカウント情報が必要になります。

APIのベースURI

用途APIのベースURI管理画面URI
ステージングhttps://az-api.hexabase.comhttps://az.hexabase.com
本番https://api.hexabase.comhttps://app.hexabase.com

アカウント情報

  • Hexabaseのアカウント情報(ID, パスワード)
  • APIの実行結果は、APIを実行するアカウントの権限に従います。

APIの基本操作#

APIで、Hexabaseを操作する流れは、次のようになります。

  1. ログインして、トークンを取得する
  2. トークンを指定して、ワークスペースを選択する
  3. トークンとワークスペースIDを指定して、アプリケーション情報を取得する
  4. トークンと対象のIDを指定して、必要なAPIを呼び出す

画面項目ID(display_id)と内部ID#

HexabaseのIDには、2つの種類があります。分かりやすい任意の値を設定できる「画面ID/画面項目ID」(display_id)と、システム内部で識別している「内部ID」(internal_id)です。

画面項目ID は、同一ワークスペースでユニークな値を指定しますが、異なるワークスペース間では、IDが同一であっても構いません。ステージング環境と本番環境で、同一の IDを指定するには、この画面項目IDを利用します。

画面項目IDは、管理画面で設定できます。

1. APIでloginする#

APIでログインするには、次のAPIを呼び出します。このとき、Request Bodyで、アカウントのID(email)とパスワードを指定します。

Post https://az-api.hexabase.com/api/v0/login

Request Body

{
"email": "foo@example.net",
"password": "**********"
}

その結果、Response Bodyに、トークンが返ってきます。

{
"token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

2. APIでワークスペースを選択する#

APIでワークスペースを選択するには、次のAPIを呼び出します。このとき、リクエストヘッダで、ログイン時に取得したトークンを指定します。

Get https://az-api.hexabase.com/api/v0/workspaces

Request Header

Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

その結果、Response Bodyに、ワークスペース情報が返ってきます。

{
"workspaces": [
{
"workspace_id": "60594049dabf490001d84684",
"workspace_name": "demo_workspace"
},
{
"workspace_id": "60d45d336d66ed844b1190fe",
"workspace_name": "demo_developer"
}
],
"current_workspace_id": "60d45d336d66ed844b1190fe"
}

3. APIでアプリケーション情報を取得する#

APIでアプリケーション情報を取得するには、次のAPIを呼び出します。このとき、APIのParamsとしてワークスペースのID(workspace_id)を、リクエストヘッダでログイン時に取得したトークンを指定します。

Get https://az-api.hexabase.com/api/v0/workspaces/:workspace-id/applications

Params

workspace_id: 60d45d336d66ed844b1190fe

Request Header

Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

その結果、Response Bodyに、アプリケーション情報が返ってきます。

[
{
"application_id": "60d45d336d66ed844b119101",
"name": "新しいアプリケーション",
"display_id": "new_app",
"datastores": [
{
"datastore_id": "60d45d51dbf1fd0948253d8d",
"name": "新しいデータベース",
"display_id": "new_db"
}
]
},
{
"application_id": "60d5b2bbfc2b8d27e799d8b6",
"name": "hexa-simple-example",
"display_id": "APP-MTggkbQA",
"datastores": [
{
"datastore_id": "60d5b2bb77d6297bc49699de",
"name": "TODOサンプル",
"display_id": "Db-todo1"
}
]
}
]

4. APIでデータベースのアイテムリストを取得する#

APIでデータベースのアイテムリストを取得するには、次のAPIを呼び出します。このとき、次の値を指定します。

APIのParam

  • app-id = アプリケーションのID(display_id)
  • datastore-id = データベースのID(display_id)

リクエストヘッダ

  • ログイン時に取得したトークン

リクエストボディ

  • 検索条件および出力形式

アプリケーションを操作するには、アプリケーションのdisplay_idをapp-idとして指定します。データべースを操作するには、データベースのdisplay_idをdatastore-idとして指定します。

display_idは、管理画面で確認・設定できます。

Post https://az-api.hexabase.com/api/v0/applications/:app-id/datastores/:datastore-id/items/search

Params

app-id: APP-MTggkbQA
datastore-id: Db-todo1

Request Header

Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Request Body

{
"use_or_condition": false,
"page": 1,
"per_page": 0,
"use_display_id": true,
"return_number_value": true
}

その結果、Response Bodyにアイテム一覧が返ってきます。

{
"items": [
{
"Assignee": "X",
"Category": "A",
"DueDate": "2020-04-04T15:00:00Z",
"Status": "完了",
"Title": "タスクE",
"created_at": "2020-08-25T08:59:20Z",
"created_by": "IMPORT",
"d_id": "60d5b2bb77d6297bc49699de",
"i_id": "60d5b2bddbf1fd0948253e1a",
"p_id": "60d5b2bbfc2b8d27e799d8b6",
"rev_no": 2,
"seed_i_id": "5f525616412f7a0001e93d5c",
"status_id": "60d5b2bb77d6297bc49699e6",
"title": "タスクE",
"unread": 0,
"updated_at": "2020-08-25T09:05:33Z",
"updated_by": "5f253590c6e47b366d3d92d4",
"w_id": "60d45d336d66ed844b1190fe"
},
{
"Assignee": "X",
"Category": "B",
"DueDate": "2020-04-03T15:00:00Z",
"Status": "確認",
"Title": "タスクD",
"created_at": "2020-08-25T08:59:20Z",
"created_by": "IMPORT",
"d_id": "60d5b2bb77d6297bc49699de",
"i_id": "60d5b2bddbf1fd0948253e1b",
"p_id": "60d5b2bbfc2b8d27e799d8b6",
"rev_no": 2,
"seed_i_id": "5f525616412f7a0001e93d5d",
"status_id": "60d5b2bb77d6297bc49699e9",
"title": "タスクD",
"unread": 0,
"updated_at": "2020-08-25T09:05:06Z",
"updated_by": "5f253590c6e47b366d3d92d4",
"w_id": "60d45d336d66ed844b1190fe"
},
{
"Assignee": "Y",
"Category": "C",
"DueDate": "2020-04-02T15:00:00Z",
"Status": "作業中",
"Title": "タスクC",
"created_at": "2020-08-25T08:59:20Z",
"created_by": "IMPORT",
"d_id": "60d5b2bb77d6297bc49699de",
"i_id": "60d5b2bddbf1fd0948253e1c",
"p_id": "60d5b2bbfc2b8d27e799d8b6",
"rev_no": 2,
"seed_i_id": "5f525616412f7a0001e93d5e",
"status_id": "60d5b2bb77d6297bc49699ea",
"title": "タスクC",
"unread": 0,
"updated_at": "2020-08-25T09:04:29Z",
"updated_by": "5f253590c6e47b366d3d92d4",
"w_id": "60d45d336d66ed844b1190fe"
},
{
"Assignee": "Y",
"Category": "A",
"DueDate": "2020-04-01T15:00:00Z",
"Status": "受付",
"Title": "タスクB",
"created_at": "2020-08-25T08:59:20Z",
"created_by": "IMPORT",
"d_id": "60d5b2bb77d6297bc49699de",
"i_id": "60d5b2bddbf1fd0948253e1d",
"p_id": "60d5b2bbfc2b8d27e799d8b6",
"rev_no": 2,
"seed_i_id": "5f525616412f7a0001e93d5f",
"status_id": "60d5b2bb77d6297bc49699e8",
"title": "タスクB",
"unread": 0,
"updated_at": "2020-08-25T09:04:06Z",
"updated_by": "5f253590c6e47b366d3d92d4",
"w_id": "60d45d336d66ed844b1190fe"
},
{
"Assignee": "Y",
"Category": "B",
"DueDate": "2020-03-31T15:00:00Z",
"Status": "新規",
"Title": "タスクA",
"created_at": "2020-08-25T08:59:20Z",
"created_by": "IMPORT",
"d_id": "60d5b2bb77d6297bc49699de",
"i_id": "60d5b2bddbf1fd0948253e1e",
"p_id": "60d5b2bbfc2b8d27e799d8b6",
"rev_no": 2,
"seed_i_id": "5f525616412f7a0001e93d60",
"status_id": "60d5b2bb77d6297bc49699e7",
"title": "タスクA",
"unread": 0,
"updated_at": "2020-08-25T09:03:38Z",
"updated_by": "5f253590c6e47b366d3d92d4",
"w_id": "60d45d336d66ed844b1190fe"
}
],
"totalItems": 5
}

関連ページ#


Hexabaseのフロントエンドアプリケーションは、このようなAPIを組み合わせて、バックエンドとデータをやり取りします。

次は、フロントエンドサンプルをローカルで起動してみましょう。