Step5.APIでバックエンドにアクセスする
Hexabaseのバックエンドは、Web APIでアクセスできます。
ここでは、API経由で、ToDoサンプルを呼び出してみましょう。
デモ動画
用意するもの
APIの動作を検証するには、何らかのAPI開発ツール/APIテストツールの利用がおすすめです。
- Postman : Webブラウザから利用できるAPI開発ツール
- Talend API Tester Google Chrome用REST Client
- RESTED Firefox用REST Client
各ツールの使い方は、公式サイトなどをご覧ください。
あらかじめ確認する情報
APIを利用するには、APIのベースURIとアカウント情報が必要になります。
APIのベースURI
環境 | APIのベースURI | 管理画面URI |
---|---|---|
本番 | https://api.hexabase.com | https://app.hexabase.com |
検証 | https://stg-api.hexabase.com | https://stg.hexabase.com |
アカウント情報
- Hexabaseのアカウント情報(ID, パスワード)
- APIの実行結果は、APIを実行するアカウントの権限に従います。
APIの基本操作
APIで、Hexabaseを操作する流れは、次のようになります。
- ログインして、トークンを取得する
- トークンを指定して、ワークスペースを選択する
- トークンとワークスペースIDを指定して、アプリケーション情報を取得する
- トークンと対象の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://api.hexabase.com/api/v0/login
Request Body
{
"email": "[email protected]",
"password": "**********"
}
その結果、Response Bodyに、トークンが返ってきます。
{
"token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
2. APIでワークスペースを選択する
APIでワークスペースを選択するには、次のAPIを呼び出します。このとき、リクエストヘッダで、ログイン時に取得したトークンを指定します。
Get https://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://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-todo1",
"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://api.hexabase.com/api/v0/applications/:app-id/datastores/:datastore-id/items/search
Params
app-id: APP-todo1
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を組み合わせて、バックエンドとデータをやり取りします。
次は、フロントエンドサンプルをローカルで起動してみましょう。