序章

BaasBoxは、データベースサーバーとアプリケーションサーバーを組み合わせて機能するアプリケーションです。 BaasBoxは、すぐに使用できるユーザーサインアップ、ユーザー管理、役割管理、コンテンツ管理、ファイル管理、およびバックアップ付きのデータベース管理を提供します。 この機能はすべて標準のHTTPRESTAPIを介して公開されるため、Webおよびモバイルアプリケーションの開発者は、BaasBoxをバックエンドとして使用してデータを保存できます。 開発者は、アプリケーションの他の部分で使用されるBaasBoxに基づいてマイクロサービスを作成することもできます。

この記事では、BaasBoxのインストール、ユーザーの作成、管理コンソールの操作、および単純なアプリケーションバックエンドを作成する際のRESTAPIの調査について説明します。

前提条件

  • Ubuntu14.04を実行しているドロップレットがあります
  • 管理者権限を持つroot以外のユーザーとしてサーバーにログインしています。 これを設定するには、チュートリアル Ubuntu14.04の初期サーバー設定ガイドを参照してください。
  • Oracleから公式のJava8JREをインストールしました。 このチュートリアルでは、その方法について説明しています。

ステップ1—BaasBoxのインストールと実行

BaasBoxをインストールするには、公式WebサイトからBaasBoxの最新の安定バージョンをダウンロードします。 あなたはこれを使用して行うことができます wget 次のようにコマンド:

  1. wget http://www.baasbox.com/download/baasbox-stable.zip

を使用します unzip ダウンロードしたzipファイルからBaasBoxを抽出するコマンド。 お持ちでない場合 unzip、次のコマンドを使用してインストールします。

  1. sudo apt-get install unzip

次に、zipファイルの内容を抽出します。

  1. unzip baasbox-stable.zip

このコマンドは、zipファイルの内容をという名前のディレクトリに抽出します baasbox-X.Y.Z どこ X.Y.Z たとえば、最新バージョンになります。 0.9.5. 新しく作成したディレクトリを入力します。

  1. cd baasbox-X.Y.Z

このディレクトリには、 start BaasBoxを起動するために実行する必要があります。 そのためには、まず次のコマンドを使用して実行可能ファイルにする必要があります。

  1. chmod +x ./start

次に、BaasBoxを起動するには、次のコマンドを実行します。

  1. ./start

いくつかの出力が表示され、その終わりは次のようになります。

Output
2016-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:9000http://127.0.0.1:9000 インストールされているサーバーから(またはSSHトンネル経由で)
  • http://your_internal_server_ip:9000 サーバーが接続されている内部ネットワークから(内部ネットワーク上にある場合)
  • http://your_ip_address:9000 インターネットから your_ip_address 公的にアクセス可能なIPアドレスです。

必要に応じて、BaasBoxに特定のネットワークインターフェイスと別のポートでリッスンさせることができます。 これを行うには、次のコマンドを使用します。

  1. ./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リストを別のユーザーと共有できるようにする

フォローする際は、次の点に注意してください。

  • ユーザー名で2人のユーザーを作成します user1user2
  • これらのユーザーのパスワードは、 user1_passworduser2_password
  • これらのユーザーのセッションIDは、 user1_session_iduser2_session_id.

Rest APIを介してBaasBoxを管理できますが、手順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の管理コンソールから新しいユーザーを作成するには、管理コンソールでユーザー>ユーザーメニューを開き、新しいユーザーボタンをクリックします。

これにより、作成しているユーザーの詳細を入力できるフォームが開きます。

Username Password Retype Password Role フィールドは必須ですが、他のすべてのフィールドはオプションです。 必要に応じて、このフォームを下にスクロールして、追加の詳細を入力できることに注意してください。

このユーザーのユーザー名をに設定します user1. 任意の役割を選択できますが、最も一般的に使用される役割は registered. すべての詳細を入力したら、変更を保存ボタンをクリックして、ユーザー作成プロセスを完了します。

次のセクションでは、RESTAPIを使用してユーザーを作成します。 次に、アプリケーションのコンテンツの場所を構成しましょう。

ステップ4—コレクションの作成

BaasBoxはコンテンツを次のように整理します collections これは、MongoDBなどのNoSQLデータベースによって提供されるコレクションに似ています。 コレクションは保持します documents 同じタイプの。 SQLデータベースに精通しているユーザーは、 collection おおよそ似ている table. 同様に、 document のようなものです record.

コレクションは管理者のみが作成できます。 コレクションを作成する最も一般的な方法は管理コンソールからですが、RESTAPIを使用して作成することもできます。 このセクションでは、管理コンソールからコレクションを作成する方法を見ていきます。

すべてのコンテンツ管理機能は、管理コンソールの CollectionsDocuments のメニュー DATA セクション。

DATA>コレクションメニューを開きます。 アプリケーション内の現在のすべてのコレクションを一覧表示するページが表示されます。

新しいコレクションを作成するには、新しいコレクションボタンをクリックします。 これにより、コレクション名の入力を求めるフォームが表示されます。

入る todos コレクションの名前として[変更を保存]をクリックして、コレクションの作成プロセスを完了します。 これで、アプリケーションのユーザーは、REST APIを使用して、このコレクションとこのコレクション内のドキュメントにアクセスできます。 それがどのように機能するかを見てみましょう。

ステップ5—RESTAPIを使用する

管理コンソールを使用してさまざまなタスクを実行する方法がわかったので、BaasBoxのRESTAPIを使用して同じタスクを実行する方法を見てみましょう。

REST APIは、Webアプリやモバイルアプリからコンソールアプリまで、さまざまな種類のアプリケーションで使用できます。 curl 次の例でリクエストをシミュレートします。 フロントエンドプラットフォームに応じて、これらの例をニーズに適合させることができます。

RESTAPIを使用したユーザーの作成

の一般的な形式 curl ユーザーの作成に使用されるコマンドは次のとおりです。

  1. curl http://your_ip_address:9000/user \
  2. -d '{"username" : "username", "password" : "password"}' \
  3. -H Content-type:application/json \
  4. -H X-BAASBOX-APPCODE:baasbox_appcode

この例では、ユーザー名でユーザーを作成します user2. 好きなパスワードを選択してください。 のデフォルト値を使用します X-BAASBOX-APPCODE であるヘッダー 1234567890. これらの値を使用すると、コマンドは次のようになります。

  1. curl http://your_ip_address:9000/user \
  2. -d '{"username" : "user2", "password" : "user2_password"}' \
  3. -H Content-type:application/json \
  4. -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 これは、今後のすべてのクエリに存在する必要があるセッションIDです。 user2 作る予定です。 この値を次のように参照します user2_session_id 以降のセクションで。

RESTAPIを使用してユーザーをログインする

これで、のセッションIDが得られました user2、のために1つ取得しましょう user1、管理コンソールで以前に作成したユーザー。 これを行うには、次のようにログインします user1 RESTAPIを使用します。 の一般的な形式 curl ログインに使用されるコマンドは次のとおりです。

  1. curl http://your_ip_address:9000/login \
  2. -d "username=username" \
  3. -d "password=password" \
  4. -d "appcode=baasbox_appcode"

この場合、ユーザー名は user1、パスワードは作成中に使用されたものです user1、およびBaasBoxアプリコードは 1234567890. これらの値を使用すると、コマンドは次のようになります。

  1. curl http://your_ip_address:9000/login \
  2. -d "username=user1" \
  3. -d "password=user1_password" \
  4. -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 }

上記の応答の強調表示された部分は、のセッションIDを示しています user1 今後のすべてのクエリで使用する必要があります user1 作る予定です。 この値を次のように参照します user1_session_id 今後。

RESTAPIを使用したドキュメントの作成

アプリケーションで2つのドキュメントを作成しましょう。 1つのドキュメントをに割り当てます user1、管理コンソールを使用して作成したユーザーで、他のドキュメントをに割り当てます user2、RESTAPIを介して作成したユーザー。 作成するドキュメントの構造は、次の例のようになります。

Sample Document Contents
{ "list_name": "Task List Name", "tasks": [ { "task": "Task Details", "done": false }, { "task": "Task Details", "done": false } ] }

構造を見ると、ドキュメントには2つのプロパティがあることがわかります。 1つはタスクリストの名前で、もう1つはそのリスト内のタスクのリストです。

の一般的な形式 curl 新しいドキュメントの作成に使用されるコマンドは次のとおりです。

  1. curl -X POST http://your_ip_address:9000/document/collection_name \
  2. -d 'json_formatted_document' \
  3. -H Content-type:application/json \
  4. -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:

  1. curl -X POST http://your_ip_address:9000/document/todos \
  2. -d '{"list_name":"User 1 - List 1","tasks":[{"task":"User1 List1 task 1","done":false},{"task":"User1 List1 task 2","done":false}]}' \
  3. -H Content-type:application/json \
  4. -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、前の例で強調表示されている、すべての新しいドキュメント。 これをメモしてください id 後で与えるときに使用します user2 このリストへのアクセス。 以降のセクションでは、このドキュメントのIDを次のように参照します。 user1_list1_id.

ここで、自分で同じ方法を使用して次のことを行います。

  • の別のリストを作成する user1
  • の2つのリストを作成します user2

これらの手順を完了すると、合計4つのドキュメントが作成されます。 todos コレクション。 以降のセクションでは、これらのドキュメントのIDを次のように参照します。

  • user1_list1_id
  • user1_list2_id
  • user2_list1_id
  • user2_list2_id

これで、使用できるデータがいくつかできたので、RESTAPIを使用してデータをクエリする方法を調査できます。

RESTAPIを使用した単一のドキュメントの取得

の一般的な形式 curl そのによってドキュメントをフェッチするために使用されるコマンド id は:

  1. curl http://your_ip_address:9000/document/collection_name/document_id \
  2. -H X-BB-SESSION:session_id

によって作成された最初のドキュメントをフェッチする場合 user1 (と user1のクレデンシャル)、コマンドは次のようになります。

  1. curl http://your_ip_address:9000/document/todos/user1_list1_id \
  2. -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:

  1. curl -X POST http://your_ip_address:9000/document/todos/user1_list1_id \
  2. -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 しかし、 id によって作成されたドキュメントの user2、そのドキュメントを問題なくフェッチできるようになります。

RESTAPIを使用したすべてのドキュメントの取得

の一般的な形式 curl コレクションからアクセス可能なすべてのドキュメントをフェッチするために使用されるコマンドは次のとおりです。

  1. curl http://your_ip_address:9000/document/collection_name \
  2. -H X-BB-SESSION:session_id

このコマンドは、ユーザーがアクセスできるドキュメントのみを返すことに注意してください。 たとえば、このコマンドを次のように実行してみましょう。 user1:

  1. curl http://your_ip_address:9000/document/todos \
  2. -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 アクセスが返されました。 に属するセッションIDを使用して同じクエリを実行する場合 user2、別のドキュメントセットが表示されます。

RESTAPIを使用したドキュメントの更新

の一般的な形式 curl ドキュメントの更新に使用されるコマンドは次のとおりです。

  1. curl -X PUT http://your_ip_address:9000/document/collection_name/document_id \
  2. -d 'new_json_formatted_document' \
  3. -H Content-type:application/json \
  4. -H X-BB-SESSION:session_id

ドキュメントを更新する際に留意すべき点が2つあります。

  • ドキュメントの所有者のみがドキュメントを変更できます
  • アップデートは、古いドキュメントと新しいドキュメントをマージしません。 古いドキュメントを新しいドキュメントに置き換えます。 これは、更新コマンドに元のバージョンからいくつかのフィールドが欠落しているドキュメントが含まれている場合、これらのフィールドは失われることを意味します。

このコマンドを使用して、idでドキュメントを更新しましょう user1_list1_id 次の内容で:

New Document Contents
{ "list_name": "User 1 - List 1 Updated", "tasks": [ { "task": "New User1 List1 task 1", "done": false } ] }

この更新を行うためのコマンドは次のとおりです。

  1. curl -X PUT http://your_ip_address:9000/document/todos/user1_list1_id \
  2. -d '{"list_name":"User 1 - List 1 Updated","tasks":[{"task":"New User1 List1 task 1","done":false}]}' \
  3. -H Content-type:application/json \
  4. -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 ドキュメントの削除に使用されるコマンドは次のとおりです。

  1. curl -X DELETE http://your_ip_address:9000/document/collection_name/document_id \
  2. -H X-BB-SESSION:session_id

ドキュメントの所有者とユーザーのみ delete ドキュメントに対する権限により、そのドキュメントを削除できます。

このコマンドを使用して、IDを持つドキュメントを削除しましょう user1_list1_id 次のように:

  1. curl -X DELETE http://your_ip_address:9000/document/todos/user1_list1_id \
  2. -H X-BB-SESSION:user1_session_id

このコマンドを実行すると、次の出力が得られます。

Output
{"result":"ok","data":"","http_code":200}

これは、ドキュメントが正常に削除されたことを示します。 今後このドキュメントにアクセスしようとすると、 id これで失敗します。

RESTAPIを使用して別のユーザーにアクセスを許可する

デフォルトで、BaasBoxがユーザーが自分で作成していないドキュメントにアクセスできないようにする方法を見てきました。 ただし、複数のユーザーにドキュメントへのアクセスを許可する必要がある場合があります。 付与しましょう user2 IDを持つドキュメントへのアクセス user1_list1_id.

の一般的な形式 curl ドキュメントへのアクセスを許可するために使用されるコマンドは次のとおりです。

  1. curl -X PUT http://your_ip_address:9000/document/collection_name/document_id/access_type/user/username \
  2. -H X-BB-SESSION:session_id

このコマンドは、このドキュメントへの完全なアクセス権を持つユーザーによって実行された場合にのみ機能します。 The access_type プレースホルダーには、次の4つの値のいずれかを指定できます。

  • 読む
  • アップデート
  • 消去
  • すべて

付与するには user2 IDを持つドキュメントへの読み取りアクセス user1_list1_id、のセッションIDを使用して次のコマンドを実行します。 user1:

  1. curl -X PUT http://your_ip_address:9000/document/todos/user1_list1_id/read/user/user2 \
  2. -H X-BB-SESSION:user1_session_id

このコマンドを実行すると、次の出力が得られます。

Output
{"result":"ok","data":"","http_code":200}

これは、 user2 ドキュメントにアクセスできるようになりました user1_list1_id. このドキュメントに次のようにアクセスしようとした場合 user2、エラー応答の代わりにドキュメントの詳細が表示されるようになりました

ステップ6—スーパーバイザーを使用してアプリケーションを実行し続ける

長時間実行されているアプリケーションがある場合は常に、実行が停止する可能性があるというリスクがあります。 これは、アプリケーションエラー、システムの再起動など、さまざまな理由で発生する可能性があります。 予期しないシャットダウンが発生した場合に再起動するようにアプリケーションを構成することをお勧めします。 これにより、アプリケーションを保守するための管理オーバーヘッドが最小限に抑えられます。

このアプリケーションでは、スーパーバイザーを使用します。これにより、長時間実行されるアプリケーションを簡単に管理できます。 Supervisorに慣れていない場合は、 UbuntuにSupervisorをインストールして管理する方法について詳しくは、こちらをご覧ください。

まず、Supervisorをインストールします。

  1. sudo apt-get install supervisor

スーパーバイザーにアプリケーションを管理させるには、構成ファイルを作成する必要があります。 このファイルに名前を付けます baasbox.conf に配置します /etc/supervisor/conf.d ディレクトリ。

  1. sudo nano /etc/supervisor/conf.d/baasbox.conf

必要に応じて、強調表示されたセクションを置き換えて、ファイルに次のように入力します。

/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

次に、これらの変更をスーパーバイザーに通知し、スーパーバイザーにこれらの変更を使用させる必要があります。 次のコマンドを実行します。

  1. supervisorctl reread

次に、次のコマンドを実行します。

  1. supervisorctl update

これで、何らかの理由でアプリケーションがシャットダウンするたびに、Supervisorは手動による介入を必要とせずにアプリケーションが再起動することを確認します。

結論

この記事では、BaasBoxを使用して、管理コンソールとREST APIを使用してコンテンツ、ユーザー、権限を管理する方法を説明しました。 この記事で取り上げたトピックに加えて、BaasBoxが提供するものは他にもたくさんあります。 BaasBox管理コンソールをさらに詳しく調べて、ファイルの管理、データベースバックアップの作成と復元、およびAPIエンドポイントの可用性の構成を可能にするセクションについて理解することができます。 さらに重要なことは、次のアプリケーションでBaasBoxの使用を開始する準備が整ったことです。