Ubuntu14.04にBaasBoxをインストールして使用する方法
序章
BaasBoxは、データベースサーバーとアプリケーションサーバーを組み合わせて機能するアプリケーションです。 箱から出してすぐに、BaasBoxは、ユーザーのサインアップ、ユーザー管理、役割管理、コンテンツ管理、ファイル管理、およびバックアップ付きのデータベース管理を提供します。 この機能はすべて標準のHTTPRESTAPIを介して公開されているため、Webおよびモバイルアプリケーションの開発者は、BaasBoxをバックエンドとして使用してデータを保存できます。 開発者は、アプリケーションの他の部分で使用されるBaasBoxに基づいてマイクロサービスを作成することもできます。
この記事では、BaasBoxのインストール、ユーザーの作成、管理コンソールの操作、および単純なアプリケーションバックエンドを作成する際のRESTAPIの調査について説明します。
前提条件
- Ubuntu14.04を実行しているドロップレットがあります
- 管理者権限を持つroot以外のユーザーとしてサーバーにログインしています。 これを設定するには、チュートリアル Ubuntu14.04の初期サーバー設定ガイドを参照してください。
- Oracleから公式のJava8JREをインストールしました。 このチュートリアルでは、その方法について説明しています。
ステップ1—BaasBoxのインストールと実行
BaasBoxをインストールするには、公式WebサイトからBaasBoxの最新の安定バージョンをダウンロードします。 これは、wget
コマンドを使用して次のように実行できます。
- wget http://www.baasbox.com/download/baasbox-stable.zip
unzip
コマンドを使用して、ダウンロードしたzipファイルからBaasBoxを抽出します。 unzip
がない場合は、次のコマンドを使用してインストールします。
- sudo apt-get install unzip
次に、zipファイルの内容を抽出します。
- unzip baasbox-stable.zip
このコマンドは、zipファイルの内容をbaasbox-X.Y.Z
という名前のディレクトリに抽出します。ここで、X.Y.Z
は最新バージョンになります(例:0.9.5
)。 新しく作成したディレクトリを入力します。
- cd baasbox-X.Y.Z
このディレクトリには、BaasBoxを起動するために実行する必要があるstart
という名前のファイルが含まれています。 そのためには、まず次のコマンドを使用して実行可能ファイルにする必要があります。
- chmod +x ./start
次に、BaasBoxを起動するには、次のコマンドを実行します。
- ./start
いくつかの出力が表示され、その終わりは次のようになります。
Output2016-06-28 14:32:14,554 - [info] - BaasBox is Ready.
2016-06-28 14:32:14,558 - [info] - Application started (Prod)
2016-06-28 14:32:14,733 - [info] - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
2016-06-28 14:32:15,261 - [info] - Session Cleaner: started
2016-06-28 14:32:15,263 - [info] - Session cleaner: tokens: 0 - removed: 0
2016-06-28 14:32:15,263 - [info] - Session cleaner: finished
上記の出力で強調表示されている部分は、BaasBoxが現在実行中であり、マシンのポート9000
でアクセスできることを示しています。 デフォルトのBaasBox構成は、すべてのネットワークインターフェイスのこのポートでリッスンします。 これは、BaasBoxが次の場所からアクセスできることを意味します。
- インストールされているサーバーからの
http://localhost:9000
およびhttp://127.0.0.1:9000
(またはSSHトンネル経由) - サーバーが接続されている内部ネットワークからの
http://your_internal_server_ip:9000
(内部ネットワーク上にある場合) your_ip_address
が公的にアクセス可能なIPアドレスである場合、インターネットからのhttp://your_ip_address:9000
。
必要に応じて、BaasBoxに特定のネットワークインターフェイスと別のポートでリッスンさせることができます。 これを行うには、次のコマンドを使用します。
- ./start -Dhttp.port=target_port -Dhttp.address=target_interface
ブラウザでhttp://your_ip_address:9000/console
にアクセスして、BaasBox管理コンソールにアクセスすると、次の図のようなインターフェイスが表示されます。
BaasBoxを実行した状態で、アプリケーションと一部のユーザーをセットアップしましょう。
ステップ2—BaasBoxを使用してアプリケーションを作成する
この記事では、次のような単純なTodoリストマネージャーを作成します。
- ユーザーがサインアップできるようにする
- ユーザーにログインを許可する
- ユーザーが複数のToDoリストを作成できるようにする
- ユーザーが自分のToDoリストを取得できるようにする
- ユーザーが自分のToDoリストを変更できるようにする
- ユーザーが自分のToDoリストを削除できるようにする
- ユーザーが自分のToDoリストを別のユーザーと共有できるようにする
フォローする際は、次の点に注意してください。
- ユーザー名
user1
とuser2
の2人のユーザーを作成します - これらのユーザーのパスワードは、
user1_password
およびuser2_password
と呼ばれます。 - これらのユーザーのセッションIDは、
user1_session_id
およびuser2_session_id
と呼ばれます。
BAasBoxはRESTAPIを介して管理できますが、手順2で見たように、http://your_ip_address:9000/console
にある管理コンソールを使用して管理する方が便利な場合があります。 ブラウザでそのリンクにアクセスしてください。 初めて使用するため、デフォルトのクレデンシャルでログインします。
- デフォルトのユーザー名:
admin
- デフォルトのパスワード:
admin
- デフォルトのアプリコード:
1234567890
ログインすると、BaasBoxダッシュボードが表示されます。
管理コンソールを使用して、アプリケーションのユーザーを作成しましょう。
ステップ3—ユーザーの作成
ユーザー管理は、BaasBoxの最も便利な機能の1つです。 BaasBoxには、プライベートで編集できない組み込みユーザーがいます。 これには、管理コンソールへのログイン時に使用するadmin
ユーザーが含まれます。
BaasBoxを使用すると、ロールを定義してユーザーに割り当て、きめ細かいアクセス制御を実装することもできます。 デフォルトでは、BaasBoxには次の3つの役割があります。
administrator
-この役割には完全な無制限のアクセス権がありますbackoffice
-このロールは、登録ユーザーによって作成されたコンテンツへのアクセスを許可しますregistered
-これは新規登録ユーザーのデフォルトの役割です
これらの事前構成された役割に加えて、独自の役割を追加できます。 新しいロールが作成されると、上記のregistered
ロールと同じ権限が付与されます。
管理コンソールまたはRESTAPIを使用して、BaasBoxでユーザーを作成できます。 通常、REST APIを使用して、アプリのユーザー登録プロセスなどを通じて、プログラムでユーザーを作成します。
管理コンソールからユーザーを追加するときに、ユーザーのカスタムロールを設定できます。 ただし、組み込みのREST APIを使用してサインアップする場合、新しく作成されたユーザーにはregistered
ロールが割り当てられます。
BaasBoxの管理コンソールから新しいユーザーを作成するには、管理コンソールでユーザー>ユーザーメニューを開き、新しいユーザーボタンをクリックします。
これにより、作成しているユーザーの詳細を入力できるフォームが開きます。
ユーザー名、パスワード、パスワードの再入力およびロールフィールドは必須ですが、他のすべてのフィールドはオプションです。 必要に応じて、このフォームを下にスクロールして、追加の詳細を入力できることに注意してください。
このユーザーのユーザー名をuser1
に設定します。 任意の役割を選択できますが、最も一般的に使用される役割はregistered
です。 すべての詳細を入力したら、変更を保存ボタンをクリックして、ユーザー作成プロセスを完了します。
次のセクションでは、RESTAPIを使用してユーザーを作成します。 次に、アプリケーションのコンテンツの場所を構成しましょう。
ステップ4—コレクションの作成
BaasBoxは、コンテンツをcollections
に編成します。これは、MongoDBなどのNoSQLデータベースによって提供されるコレクションに似ています。 コレクションは、同じタイプのdocuments
を保持します。 SQLデータベースに精通しているユーザーは、collection
がtable
とほぼ同じであると考えることができます。 同様に、document
はrecord
に似ています。
コレクションは管理者のみが作成できます。 コレクションを作成する最も一般的な方法は管理コンソールからですが、RESTAPIを使用して作成することもできます。 このセクションでは、管理コンソールからコレクションを作成する方法を見ていきます。
すべてのコンテンツ管理機能は、Collections
およびDocuments
メニューのDATA
セクションの管理コンソールで使用できます。
DATA>コレクションメニューを開きます。 アプリケーション内の現在のすべてのコレクションを一覧表示するページが表示されます。
新しいコレクションを作成するには、新しいコレクションボタンをクリックします。 これにより、コレクション名の入力を求めるフォームが表示されます。
コレクションの名前としてtodos
と入力し、 [変更を保存]をクリックして、コレクションの作成プロセスを完了します。 これで、アプリケーションのユーザーは、REST APIを使用して、このコレクションとこのコレクション内のドキュメントにアクセスできます。 それがどのように機能するかを見てみましょう。
ステップ5—RESTAPIを使用する
管理コンソールを使用してさまざまなタスクを実行する方法がわかったので、BaasBoxのRESTAPIを使用して同じタスクを実行する方法を見てみましょう。
REST APIは、Webアプリやモバイルアプリからコンソールアプリまで、さまざまな種類のアプリケーションで使用できます。次の例では、curl
を使用してリクエストをシミュレートします。 フロントエンドプラットフォームに応じて、これらの例をニーズに適合させることができます。
RESTAPIを使用したユーザーの作成
ユーザーの作成に使用されるcurl
コマンドの一般的な形式は次のとおりです。
- curl http://your_ip_address:9000/user \
- -d '{"username" : "username", "password" : "password"}' \
- -H Content-type:application/json \
- -H X-BAASBOX-APPCODE:baasbox_appcode
この例では、ユーザー名user2
のユーザーを作成します。 好きなパスワードを選択してください。 X-BAASBOX-APPCODE
ヘッダーのデフォルト値である1234567890
を使用します。 これらの値を使用すると、コマンドは次のようになります。
- curl http://your_ip_address:9000/user \
- -d '{"username" : "user2", "password" : "user2_password"}' \
- -H Content-type:application/json \
- -H X-BAASBOX-APPCODE:1234567890
このコマンドを実行した場合の出力は、次のようになります。
Output{"result":"ok","data":{"user":{"name":"user2","status":"ACTIVE","roles":[{"name":"registered","isrole":true}]},"id":"a4353548-501a-4c55-8acd-989590b2393c","visibleByAnonymousUsers":{},"visibleByTheUser":{},"visibleByFriends":{},"visibleByRegisteredUsers":{"_social":{}},"signUpDate":"2016-04-05T13:12:17.452-0400","generated_username":false,"X-BB-SESSION":"992330a3-4e2c-450c-8d83-8eaf2903188b"},"http_code":201}
上記の出力のフォーマットされたバージョンは次のとおりです。
Output{
"result": "ok",
"data": {
"user": {
"name": "user2",
"status": "ACTIVE",
"roles": [
{
"name": "registered",
"isrole": true
}
]
},
"id": "a4353548-501a-4c55-8acd-989590b2393c",
"visibleByAnonymousUsers": {},
"visibleByTheUser": {},
"visibleByFriends": {},
"visibleByRegisteredUsers": {
"_social": {}
},
"signUpDate": "2016-04-05T13:12:17.452-0400",
"generated_username": false,
"X-BB-SESSION": "992330a3-4e2c-450c-8d83-8eaf2903188b"
},
"http_code": 201
}
上記の出力で強調表示されている値に注意してください。 BaasBoxは、ユーザーごとに一意のid
を生成します。 このIDは、REST APIを介してこの特定のユーザーのドキュメントをフェッチ、変更、または削除する場合に使用します。
2番目に強調表示されている値はX-BB-SESSION
です。これは、user2
が行う今後のすべてのクエリに存在する必要があるセッションIDです。 以降のセクションでは、この値をuser2_session_id
と呼びます。
RESTAPIを使用してユーザーをログインする
user2
のセッションIDを取得したので、管理コンソールで以前に作成したユーザーであるuser1
のセッションIDを取得しましょう。 これを行うには、RESTAPIを使用してuser1
としてログインします。 ログインに使用されるcurl
コマンドの一般的な形式は次のとおりです。
- curl http://your_ip_address:9000/login \
- -d "username=username" \
- -d "password=password" \
- -d "appcode=baasbox_appcode"
この場合、ユーザー名はuser1
、パスワードはuser1
の作成時に使用されたもの、BaasBoxアプリコードは1234567890
です。 これらの値を使用すると、コマンドは次のようになります。
- curl http://your_ip_address:9000/login \
- -d "username=user1" \
- -d "password=user1_password" \
- -d "appcode=1234567890"
このコマンドを実行した場合の出力は、次のようになります。
Output{"result":"ok","data":{"user":{"name":"user1","status":"ACTIVE","roles":[{"name":"registered","isrole":true}]},"id":"84191e4c-2471-48a7-98bb-ecdaf118285c","visibleByAnonymousUsers":{},"visibleByTheUser":{},"visibleByFriends":{},"visibleByRegisteredUsers":{"_social":{}},"signUpDate":"2016-04-05T13:06:35.750-0400","generated_username":false,"X-BB-SESSION":"74400b4b-d16c-45a2-ada3-1cd51cc202bb"},"http_code":200}
上記の出力のフォーマットされたバージョンは次のとおりです。
Output{
"result": "ok",
"data": {
"user": {
"name": "user1",
"status": "ACTIVE",
"roles": [
{
"name": "registered",
"isrole": true
}
]
},
"id": "84191e4c-2471-48a7-98bb-ecdaf118285c",
"visibleByAnonymousUsers": {},
"visibleByTheUser": {},
"visibleByFriends": {},
"visibleByRegisteredUsers": {}
},
"signUpDate": "2016-04-05T13:06:35.750-0400",
"generated_username": false,
"X-BB-SESSION": "74400b4b-d16c-45a2-ada3-1cd51cc202bb"
},
"http_code": 200
}
上記の応答の強調表示された部分は、user1
が行う今後のすべてのクエリで使用する必要があるuser1
のセッションIDを示しています。 以降、この値をuser1_session_id
と呼びます。
RESTAPIを使用したドキュメントの作成
アプリケーションで2つのドキュメントを作成しましょう。 1つのドキュメントを管理コンソールを使用して作成したユーザーであるuser1
に割り当て、もう1つのドキュメントをRESTAPIを使用して作成したユーザーであるuser2
に割り当てます。 作成するドキュメントの構造は、次の例のようになります。
Sample Document Contents{
"list_name": "Task List Name",
"tasks": [
{
"task": "Task Details",
"done": false
},
{
"task": "Task Details",
"done": false
}
]
}
構造を見ると、ドキュメントには2つのプロパティがあることがわかります。 1つはタスクリストの名前で、もう1つはそのリスト内のタスクのリストです。
新しいドキュメントの作成に使用されるcurl
コマンドの一般的な形式は次のとおりです。
- curl -X POST http://your_ip_address:9000/document/collection_name \
- -d 'json_formatted_document' \
- -H Content-type:application/json \
- -H X-BB-SESSION:session_id
user1
のドキュメントを作成することから始めましょう。 この場合、コレクションの名前はtodos
であり、挿入するドキュメントは次のようになります。
Document Contents{
"list_name": "User 1 - List 1",
"tasks": [
{
"task": "User1 List1 task 1",
"done": false
},
{
"task": "User1 List1 task 2",
"done": false
}
]
}
ドキュメントがuser1
に関連付けられるようにするために、そのユーザーをシステムにログインしたときに取得したuser1
のセッションIDを使用します。
次のコマンドを入力して、user1
のドキュメントを作成します。
- curl -X POST http://your_ip_address:9000/document/todos \
- -d '{"list_name":"User 1 - List 1","tasks":[{"task":"User1 List1 task 1","done":false},{"task":"User1 List1 task 2","done":false}]}' \
- -H Content-type:application/json \
- -H X-BB-SESSION:user1_session_id
このコマンドを実行すると、次のような出力になります。
Output{"result":"ok","data":{"@rid":"#24:1","@version":2,"@class":"todos","list_name":"User 1 - List 1","tasks":[{"task":"User1 List1 task 1","done":false},{"task":"User1 List1 task 2","done":false}],"id":"c83309e7-cbbd-49c8-a76b-9e8fadc72d6f","_creation_date":"2016-04-05T20:34:30.132-0400","_author":"user1"},"http_code":200}
上記の出力のフォーマットされたバージョンは次のとおりです。
Output{
"result": "ok",
"data": {
"@rid": "#24:1",
"@version": 2,
"@class": "todos",
"list_name": "User 1 - List 1",
"tasks": [
{
"task": "User1 List1 task 1",
"done": false
},
{
"task": "User1 List1 task 2",
"done": false
}
],
"id": "c83309e7-cbbd-49c8-a76b-9e8fadc72d6f",
"_creation_date": "2016-04-05T20:34:30.132-0400",
"_author": "user1"
},
"http_code": 200
}
新しいユーザーの場合と同様に、BaasBoxはすべての新しいドキュメントに対してid
を作成します。これは、前の例で強調表示されています。 このuser2
にこのリストへのアクセスを許可するときに後で使用するので、このid
をメモしてください。 以降のセクションでは、このドキュメントのIDをuser1_list1_id
と呼びます。
ここで、自分で同じ方法を使用して次のことを行います。
user1
の別のリストを作成しますuser2
のリストを2つ作成します
これらの手順を完了すると、todos
コレクションに合計4つのドキュメントが作成されます。 以降のセクションでは、これらのドキュメントのIDを次のように参照します。
- user1_list1_id
- user1_list2_id
- user2_list1_id
- user2_list2_id
これで、使用できるデータがいくつかできたので、RESTAPIを使用してデータをクエリする方法を調査できます。
RESTAPIを使用した単一のドキュメントの取得
id
によってドキュメントをフェッチするために使用されるcurl
コマンドの一般的な形式は次のとおりです。
- curl http://your_ip_address:9000/document/collection_name/document_id \
- -H X-BB-SESSION:session_id
user1
によって作成された最初のドキュメントを(user1
の資格情報を使用して)フェッチする場合、コマンドは次のようになります。
- curl http://your_ip_address:9000/document/todos/user1_list1_id \
- -H X-BB-SESSION:user1_session_id
このコマンドを実行すると、次のような出力が得られます。
Output{"result":"ok","data":{"@rid":"#24:1","@version":2,"@class":"todos","list_name":"User 1 - List 1","tasks":[{"task":"User1 List1 task 1","done":false},{"task":"User1 List1 task 2","done":false}],"id":"c83309e7-cbbd-49c8-a76b-9e8fadc72d6f","_creation_date":"2016-04-05T20:34:30.132-0400","_author":"user1"},"http_code":200}
応答のフォーマットされたバージョンは次のとおりです。
Output{
"result": "ok",
"data": {
"@rid": "#24:1",
"@version": 2,
"@class": "todos",
"list_name": "User 1 - List 1",
"tasks": [
{
"task": "User1 List1 task 1",
"done": false
},
{
"task": "User1 List1 task 2",
"done": false
}
],
"id": "c83309e7-cbbd-49c8-a76b-9e8fadc72d6f",
"_creation_date": "2016-04-05T20:34:30.132-0400",
"_author": "user1"
},
"http_code": 200
}
単一のドキュメントを取得する方法がわかったので、同じことをもう一度試してください。ただし、今回はuser2
のセッションIDを使用してドキュメントを取得します。
- curl -X POST http://your_ip_address:9000/document/todos/user1_list1_id \
- -H X-BB-SESSION:user2_session_id
このコマンドを実行すると、次のような出力が表示されます。
Output{"result":"error","message":"c83309e7-cbbd-49c8-a76b-9e8fadc72d6f not found","resource":"/document/todos/c83309e7-cbbd-49c8-a76b-9e8fadc72d6f","method":"GET","request_header":{"Accept":["*/*"],"Host":["localhost:9000"],"User-Agent":["curl/7.35.0"],"X-BB-SESSION":["8f5a2e48-0f42-4478-bd1b-d28699158c4b"]},"API_version":"0.9.5","http_code":404}
読みやすくするためにフォーマットされた同じ出力を次に示します。
Output{
"result": "error",
"message": "c83309e7-cbbd-49c8-a76b-9e8fadc72d6f not found",
"resource": "\/document\/todos\/c83309e7-cbbd-49c8-a76b-9e8fadc72d6f",
"method": "GET",
"request_header": {
"Accept": [
"*\/*"
],
"Host": [
"localhost:9000"
],
"User-Agent": [
"curl\/7.35.0"
],
"X-BB-SESSION": [
"8f5a2e48-0f42-4478-bd1b-d28699158c4b"
]
},
"API_version": "0.9.5",
"http_code": 404
}
ご覧のとおり、user2
はこのドキュメントを作成せず、このドキュメントにアクセスできなかったため、フェッチ操作が失敗しました。 コマンドをuser2
として実行しようとしたが、user2
によって作成されたドキュメントのid
を使用すると、そのドキュメントを正常にフェッチできます。
RESTAPIを使用したすべてのドキュメントの取得
コレクションからアクセス可能なすべてのドキュメントをフェッチするために使用されるcurl
コマンドの一般的な形式は次のとおりです。
- curl http://your_ip_address:9000/document/collection_name \
- -H X-BB-SESSION:session_id
このコマンドは、ユーザーがアクセスできるドキュメントのみを返すことに注意してください。 たとえば、このコマンドをuser1
として実行してみましょう。
- curl http://your_ip_address:9000/document/todos \
- -H X-BB-SESSION:user1_session_id
このコマンドを実行すると、次のような出力が得られます。
Output{"result":"ok","data":[{"@rid":"#24:1","@version":2,"@class":"todos","list_name":"User 1 - List 1","tasks":[{"task":"User1 List1 task 1","done":false},{"task":"User1 List1 task 2","done":false}],"id":"c83309e7-cbbd-49c8-a76b-9e8fadc72d6f","_creation_date":"2016-04-05T20:34:30.132-0400","_author":"user1"},{"@rid":"#24:2","@version":1,"@class":"todos","list_name":"User 1 - List 2","tasks":[{"task":"User1 List2 task 1","done":false},{"task":"User1 List2 task 2","done":false}],"id":"7c99c877-d269-4281-8a22-ef72175085f4","_creation_date":"2016-04-05T20:46:14.338-0400","_author":"user1"}],"http_code":200}
その出力のフォーマットされたバージョンは次のとおりです。
Output{
"result": "ok",
"data": [
{
"@rid": "#24:1",
"@version": 2,
"@class": "todos",
"list_name": "User 1 - List 1",
"tasks": [
{
"task": "User1 List1 task 1",
"done": false
},
{
"task": "User1 List1 task 2",
"done": false
}
],
"id": "c83309e7-cbbd-49c8-a76b-9e8fadc72d6f",
"_creation_date": "2016-04-05T20:34:30.132-0400",
"_author": "user1"
},
{
"@rid": "#24:2",
"@version": 1,
"@class": "todos",
"list_name": "User 1 - List 2",
"tasks": [
{
"task": "User1 List2 task 1",
"done": false
},
{
"task": "User1 List2 task 2",
"done": false
}
],
"id": "7c99c877-d269-4281-8a22-ef72175085f4",
"_creation_date": "2016-04-05T20:46:14.338-0400",
"_author": "user1"
}
],
"http_code": 200
}
出力からわかるように、user1
がアクセスしたドキュメントのみが返されました。 user2
に属するセッションIDを使用して同じクエリを実行すると、異なるドキュメントのセットが表示されます。
RESTAPIを使用したドキュメントの更新
ドキュメントの更新に使用されるcurl
コマンドの一般的な形式は次のとおりです。
- curl -X PUT http://your_ip_address:9000/document/collection_name/document_id \
- -d 'new_json_formatted_document' \
- -H Content-type:application/json \
- -H X-BB-SESSION:session_id
ドキュメントを更新する際に留意すべき点が2つあります。
- ドキュメントの所有者のみがドキュメントを変更できます
- アップデートは、古いドキュメントと新しいドキュメントをマージしません。 古いドキュメントを新しいドキュメントに置き換えます。 これは、更新コマンドに元のバージョンからいくつかのフィールドが欠落しているドキュメントが含まれている場合、これらのフィールドは失われることを意味します。
このコマンドを使用して、IDuser1_list1_id
のドキュメントを次の内容で更新してみましょう。
New Document Contents{
"list_name": "User 1 - List 1 Updated",
"tasks": [
{
"task": "New User1 List1 task 1",
"done": false
}
]
}
この更新を行うためのコマンドは次のとおりです。
- curl -X PUT http://your_ip_address:9000/document/todos/user1_list1_id \
- -d '{"list_name":"User 1 - List 1 Updated","tasks":[{"task":"New User1 List1 task 1","done":false}]}' \
- -H Content-type:application/json \
- -H X-BB-SESSION:user1_session_id
このコマンドを実行すると、次のような出力が得られます。
Output{"result":"ok","data":{"@rid":"#24:1","@version":4,"@class":"todos","list_name":"User 1 - List 1 Updated","tasks":[{"task":"New User1 List1 task 1","done":false}],"id":"c83309e7-cbbd-49c8-a76b-9e8fadc72d6f","_creation_date":"2016-04-05T20:34:30.132-0400","_author":"user1"},"http_code":200}
これが同じ出力で、フォーマットされています。
Output{
"result": "ok",
"data": {
"@rid": "#24:1",
"@version": 4,
"@class": "todos",
"list_name": "User 1 - List 1 Updated",
"tasks": [
{
"task": "New User1 List1 task 1",
"done": false
}
],
"id": "c83309e7-cbbd-49c8-a76b-9e8fadc72d6f",
"_creation_date": "2016-04-05T20:34:30.132-0400",
"_author": "user1"
},
"http_code": 200
}
ご覧のとおり、ドキュメントは新しい情報で更新されています。
RESTAPIを使用したドキュメントの削除
ドキュメントの削除に使用されるcurl
コマンドの一般的な形式は次のとおりです。
- curl -X DELETE http://your_ip_address:9000/document/collection_name/document_id \
- -H X-BB-SESSION:session_id
ドキュメントを削除できるのは、ドキュメントの所有者とドキュメントに対するdelete
権限を持つユーザーのみです。
次のように、このコマンドを使用してIDuser1_list1_id
のドキュメントを削除しましょう。
- curl -X DELETE http://your_ip_address:9000/document/todos/user1_list1_id \
- -H X-BB-SESSION:user1_session_id
このコマンドを実行すると、次の出力が得られます。
Output{"result":"ok","data":"","http_code":200}
これは、ドキュメントが正常に削除されたことを示します。 id
が今後このドキュメントにアクセスしようとすると、失敗します。
RESTAPIを使用して別のユーザーにアクセスを許可する
デフォルトで、BaasBoxがユーザーが自分で作成していないドキュメントにアクセスできないようにする方法を見てきました。 ただし、複数のユーザーにドキュメントへのアクセスを許可する必要がある場合があります。 user2
にIDuser1_list1_id
のドキュメントへのアクセスを許可しましょう。
ドキュメントへのアクセスを許可するために使用されるcurl
コマンドの一般的な形式は次のとおりです。
- curl -X PUT http://your_ip_address:9000/document/collection_name/document_id/access_type/user/username \
- -H X-BB-SESSION:session_id
このコマンドは、このドキュメントへの完全なアクセス権を持つユーザーによって実行された場合にのみ機能します。 access_type
プレースホルダーには、次の4つの値のいずれかを指定できます。
- 読む
- アップデート
- 消去
- すべて
user2
にIDuser1_list1_id
のドキュメントへの読み取りアクセスを許可するには、user1
のセッションIDを使用して次のコマンドを実行します。
- curl -X PUT http://your_ip_address:9000/document/todos/user1_list1_id/read/user/user2 \
- -H X-BB-SESSION:user1_session_id
このコマンドを実行すると、次の出力が得られます。
Output{"result":"ok","data":"","http_code":200}
これは、user2
がドキュメントuser1_list1_id
にアクセスできるようになったことを示しています。 このドキュメントにuser2
としてアクセスしようとすると、エラー応答ではなくドキュメントの詳細が表示されるようになります
ステップ6—スーパーバイザーを使用してアプリケーションを実行し続ける
長時間実行されているアプリケーションがある場合は常に、実行が停止する可能性があるというリスクがあります。 これは、アプリケーションエラー、システムの再起動など、さまざまな理由で発生する可能性があります。 予期しないシャットダウンが発生した場合に再起動するようにアプリケーションを構成することをお勧めします。 これにより、アプリケーションを維持するための管理オーバーヘッドが最小限に抑えられます。
このアプリケーションでは、スーパーバイザーを使用します。これにより、長時間実行されるアプリケーションを簡単に管理できます。 Supervisorに慣れていない場合は、 UbuntuにSupervisorをインストールして管理する方法について詳しくは、こちらをご覧ください。
まず、Supervisorをインストールします。
- sudo apt-get install supervisor
スーパーバイザーにアプリケーションを管理させるには、構成ファイルを作成する必要があります。 このファイルにbaasbox.conf
という名前を付け、/etc/supervisor/conf.d
ディレクトリに配置します。
- sudo nano /etc/supervisor/conf.d/baasbox.conf
必要に応じて、強調表示されたセクションを置き換えて、ファイルに次のように入力します。
[program:Baasbox]
directory = /home/sammy/baasbox-0.9.5
command = /home/sammy/baasbox-0.9.5/start
autostart = true
autorestart = true
startsecs = 5
user = sammy
stdout_logfile = /var/log/supervisor/baasbox.log
次に、これらの変更をスーパーバイザーに通知し、スーパーバイザーにこれらの変更を使用させる必要があります。 次のコマンドを実行します。
- supervisorctl reread
次に、次のコマンドを実行します。
- supervisorctl update
これで、何らかの理由でアプリケーションがシャットダウンするたびに、Supervisorは手動による介入を必要とせずにアプリケーションが再起動することを確認します。
結論
この記事では、BaasBoxを使用して、管理コンソールとREST APIを使用してコンテンツ、ユーザー、およびアクセス許可を管理する方法について説明しました。 この記事で取り上げたトピックに加えて、BaasBoxが提供するものは他にもたくさんあります。 BaasBox管理コンソールをさらに詳しく調べて、ファイルの管理、データベースバックアップの作成と復元、およびAPIエンドポイントの可用性の構成を可能にするセクションについて理解することができます。 さらに重要なことは、次のアプリケーションでBaasBoxの使用を開始する準備が整ったことです。