Ubuntu 14.04にBaasBoxをインストールして使用する方法

前書き

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

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

前提条件

  • Ubuntu 14.04を実行しているドロップレットがあります

  • 管理者権限を持つ非rootユーザーとしてサーバーにログインしています。 これを設定するには、チュートリアルhttps://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04[Ubuntu 14.04の初期サーバーセットアップガイド]を参照してください。

  • Oracleから公式のJava 8 JREをインストールしました。 https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04#installing-the-oracle-jdk [このチュートリアル]では、それを行う。

ステップ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- 」という名前のディレクトリに抽出します。「+」は最新バージョン、たとえば「0.9.5」になります。 新しく作成したディレクトリを入力します。

cd baasbox-

このディレクトリには、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] -
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は次の場所からアクセスできるようになりました。

  • インストールされているサーバーから(またはSSHトンネル経由で) + http:// localhost:9000 +`および `+ http://127.0.0.1:9000 +

  • サーバーが接続されている内部ネットワークからの「+ http://:9000+」(内部ネットワーク上にある場合)

  • ++`が公的にアクセス可能なIPアドレスである場合、インターネットからの `+ http://:9000 +

ブラウザで `+ http://:9000 / console +`にアクセスしてBaasBox管理コンソールにアクセスすると、次の図のようなインターフェイスが表示されます。

image:http://i.imgur.com/G1LdkBf.png [BaasBox Admin Console]

BaasBoxを実行して、アプリケーションと一部のユーザーをセットアップしましょう。

ステップ2-BaasBoxを使用したアプリケーションの作成

この記事では、次のような単純な* Todoリストマネージャー*を作成します。

  • ユーザーにサインアップを許可する

  • ユーザーにログインを許可する

  • ユーザーが複数の仕事リストを作成できるようにする

  • ユーザーが自分のToDoリストを取得できるようにする

  • ユーザーがToDoリストを変更できるようにする

  • ユーザーが自分のToDoリストを削除できるようにする

  • ユーザーが自分のToDoリストを別のユーザーと共有できるようにする

従う間、以下に注意してください:

  • ユーザー名が「」と「」の2人のユーザーを作成します

  • これらのユーザーのパスワードは、「」および「」と呼ばれます。

  • これらのユーザーのセッションIDは、「」および「」と呼ばれます。

REST APIを介してBaasBoxを管理できますが、ステップ2で見たように、 `+ http://:9000 / console +`にある管理コンソールを使用して管理する方が便利な場合があります。 ブラウザでそのリンクにアクセスします。 これは初めて使用するため、デフォルトの資格情報でログインします。

  • デフォルトのユーザー名: + admin +

  • デフォルトのパスワード: + admin

  • デフォルトのアプリコード: + 1234567890 +

image:http://i.imgur.com/PJtOyId.png [BaasBox Admin Console Login]

ログインすると、BaasBoxダッシュボードが表示されます。

画像:http://i.imgur.com/K3UxSAQ.png [BaasBox Dashboard]

管理コンソールを使用して、アプリケーションのユーザーを作成しましょう。

ステップ3-ユーザーの作成

ユーザー管理は、BaasBoxの最も役立つ機能の1つです。 BaasBoxには、プライベートで編集できない組み込みユーザーがいます。 これには、管理コンソールへのログイン時に使用する「+ admin +」ユーザーが含まれます。

BaasBoxでは、ロールを定義してユーザーに割り当て、きめ細かいアクセス制御を実装することもできます。 デフォルトでは、BaasBoxには次の3つの役割があります。

  • + administrator +-このロールには完全な無制限のアクセス権があります

  • + backoffice +-このロールは、登録ユーザーが作成したコンテンツへのアクセスを許可します

  • + registered-これは新しく登録されたユーザーのデフォルトの役割です

これらの事前構成されたロールに加えて、独自のロールを追加できます。 新しいロールが作成されると、それは上記の `+ registered +`ロールと同じパーミッションを持ちます。

管理コンソールまたはREST APIを介してBaasBoxでユーザーを作成できます。 通常、REST APIを使用して、アプリのユーザーサインアッププロセスなどにより、プログラムでユーザーを作成します。

管理コンソールからユーザーを追加するときに、ユーザーにカスタムロールを設定できます。 ただし、ビルトインREST APIを使用してサインアップする場合、新しく作成されたユーザーには `+ registered +`ロールが割り当てられます。

BaasBoxの管理コンソールから新しいユーザーを作成するには、管理コンソールで[ユーザー]> [ユーザー]メニューを開き、[新しいユーザー]ボタンをクリックします。

image:http://i.imgur.com/NA1DjAW.png [BaasBox管理コンソール-新規ユーザー]

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

image:http://i.imgur.com/83ewAxB.png [BaasBox管理コンソール-新規ユーザー]

  • Username Password Retype Password 、および Role *フィールドは必須ですが、他のすべてのフィールドはオプションです。 必要に応じて、このフォームを下にスクロールして追加の詳細を入力できます。

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

後続のセクションでREST APIを使用してユーザーを作成します。 それでは、アプリケーションのコンテンツの場所を設定しましょう。

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

BaasBoxは、コンテンツを `+ collections `に整理します。これは、MongoDBなどのNoSQLデータベースが提供するコレクションに似ています。 コレクションは同じタイプの ` documents `を保持します。 SQLデータベースに精通しているユーザーは、「 collection」が「+ table」にほぼ似ていると考えることができます。 同様に、「+ document」は「+ record」にやや似ています。

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

すべてのコンテンツ管理機能は、管理コンソールの `+ DATA `セクションの ` Collections `および ` Documents +`メニューで利用できます。

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

image:http://i.imgur.com/rjsFjh4.png [BaasBox管理コンソール-コレクション]

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

image:http://i.imgur.com/tcfq8gz.png [BaasBox管理コンソール-新しいコレクション]

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

ステップ5-REST APIを使用する

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

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

REST APIを使用してユーザーを作成する

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

curl http://:9000/user \
   -d '{"username" : "", "password" : ""}' \
   -H Content-type:application/json \
   -H X-BAASBOX-APPCODE:

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

curl http://:9000/user \
   -d '{"username" : "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}]},,"visibleByAnonymousUsers":{},"visibleByTheUser":{},"visibleByFriends":{},"visibleByRegisteredUsers":{"_social":{}},"signUpDate":"2016-04-05T13:12:17.452-0400","generated_username":false,},"http_code":201}

上記の出力のフォーマット済みバージョンは次のとおりです。

Output{
 "result": "ok",
 "data": {
   "user": {
     "name": "user2",
     "status": "ACTIVE",
     "roles": [
       {
         "name": "registered",
         "isrole": true
       }
     ]
   },
   "id": "",
   "visibleByAnonymousUsers": {},
   "visibleByTheUser": {},
   "visibleByFriends": {},
   "visibleByRegisteredUsers": {
     "_social": {}
   },
   "signUpDate": "2016-04-05T13:12:17.452-0400",
   "generated_username": false,
   "X-BB-SESSION": ""
 },
 "http_code": 201
}

上記の出力で強調表示されている値に注意してください。 BaasBoxは、すべてのユーザーに対して一意の「+ id +」を生成します。 REST APIを介してこの特定のユーザーのドキュメントを取得、変更、または削除する場合は、このIDを使用します。

2番目に強調表示されている値は、「+ X-BB-SESSION 」です。これは、「 user2 」が行う今後のすべてのクエリに存在する必要があるセッションIDです。 以降のセクションでは、この値を「+」と呼びます。

REST APIを使用したユーザーのログイン

`+ user2 `のセッションIDを取得したので、管理コンソールで作成したユーザーである ` user1 `のセッションIDを取得しましょう。 これを行うには、REST APIを使用して「 user1 」としてログインします。 ログインに使用される ` curl +`コマンドの一般的な形式は次のとおりです。

curl http://:9000/login \
   -d "username=" \
   -d "password=" \
   -d "appcode="

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

curl http://:9000/login \
   -d "username=user1" \
   -d "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": ""
 },
 "http_code": 200
}

上記の応答の強調表示された部分は、「+ user1 」が行う今後のすべてのクエリで使用する必要がある「 user1 」のセッションIDを示しています。 今後、この値を「+」と呼びます。

REST APIを使用してドキュメントを作成する

アプリケーションで2つのドキュメントを作成しましょう。 1つのドキュメントを管理コンソールを使用して作成したユーザー「+ user1 」に割り当て、もう1つのドキュメントをREST APIを使用して作成したユーザー「 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://:9000/document/ \
    -d '' \
    -H Content-type:application/json \
    -H X-BB-SESSION:

まず、「+ 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://: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:

このコマンドを実行すると、次のような出力が生成されます。

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": "",
   "_creation_date": "2016-04-05T20:34:30.132-0400",
   "_author": "user1"
 },
 "http_code": 200
}

新しいユーザーに対して行ったように、BaasBoxはすべての新しいドキュメントに対して、前の例で強調表示されている「+ id 」を作成します。 このリストに「 user2 」アクセス権を付与するときに使用するため、この「 id 」をメモしておきます。 以降のセクションでは、このドキュメントのIDを「+」と呼びます。

ここで、独自に、同じ方法を使用して以下を実行します。

  • `+ user1 +`の別のリストを作成します

  • `+ user2 +`の2つのリストを作成します

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

  • {ブランク}

  • {ブランク}

  • {ブランク}

  • {ブランク}

REST APIを使用してデータをクエリする方法を調査できるように、使用できるデータが用意されました。

REST APIを使用して単一のドキュメントを取得する

+ id`でドキュメントを取得するために使用される + curl`コマンドの一般的な形式は次のとおりです。

curl http://:9000/document// \
    -H X-BB-SESSION:

(+ user1 + の資格情報を使用して) + user1 + `によって作成された最初のドキュメントを取得する場合、コマンドは次のようになります。

curl http://:9000/document/todos/ \
    -H X-BB-SESSION:

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

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://:9000/document/todos/ \
    -H X-BB-SESSION:

このコマンドを実行すると、次のような出力が表示されます。

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 +」を使用して、そのドキュメントを正常に取得できます。

REST APIを使用してすべてのドキュメントを取得する

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

curl http://:9000/document/ \
    -H X-BB-SESSION:

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

curl http://:9000/document/todos \
    -H X-BB-SESSION:

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

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を使用して同じクエリを実行すると、異なるドキュメントセットが表示されます。

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

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

curl -X PUT http://:9000/document// \
    -d '' \
    -H Content-type:application/json \
    -H X-BB-SESSION:

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

  • ドキュメントを変更できるのはドキュメントの所有者のみです

  • 更新は、古いドキュメントと新しいドキュメントをマージしません*。 古いドキュメントを新しいドキュメントに「置き換え」ます。 これは、更新コマンドに元のバージョンから一部のフィールドが欠落しているドキュメントが含まれている場合、これらのフィールドが失われることを意味します。

このコマンドを使用して、IDが「++」のドキュメントを次の内容で更新します。

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

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

curl -X PUT http://:9000/document/todos/ \
    -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:

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

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
}

ご覧のとおり、ドキュメントは新しい情報で更新されています。

REST APIを使用したドキュメントの削除

ドキュメントを削除するために使用される `+ curl +`コマンドの一般的な形式は次のとおりです。

curl -X DELETE http://:9000/document// \
    -H X-BB-SESSION:

ドキュメントを削除できるのは、ドキュメントの所有者とドキュメントの「+ delete」権限を持つユーザーのみです。

次のように、このコマンドを使用して、IDが「++」のドキュメントを削除します。

curl -X DELETE http://:9000/document/todos/ \
    -H X-BB-SESSION:

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

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

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

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

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

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

curl -X PUT http://:9000/document////user/ \
    -H X-BB-SESSION:

このコマンドは、このドキュメントに完全にアクセスできるユーザーが実行した場合にのみ機能します。 `++`プレースホルダーには、次の4つの値のいずれかを指定できます。

  • read

  • 更新

  • 削除する

  • all

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

curl -X PUT http://:9000/document/todos//read/user/user2 \
    -H X-BB-SESSION:

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

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

これは、「+ user2 」がドキュメント「+」にアクセスできることを示しています。 このドキュメントに「+ user2 +」としてアクセスしようとすると、エラー応答の代わりにドキュメントの詳細が表示されます

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

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

このアプリケーションでは、http://supervisord.org/ [Supervisor]を使用します。これにより、長時間実行されるアプリケーションの管理が容易になります。 スーパーバイザーに詳しくない場合は、https://www.digitalocean.com/community/tutorials/how-to-install-and-manage-supervisor-on-ubuntu-and-debian-vps [how Ubuntuでスーパーバイザーをインストールして管理するには]。

まず、スーパーバイザーをインストールします。

sudo apt-get install supervisor

Supervisorでアプリケーションを管理するには、構成ファイルを作成する必要があります。 このファイルに「+ baasbox.conf 」という名前を付け、「 / etc / supervisor / conf.d +」ディレクトリに配置します。

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

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

/etc/supervisor/conf.d/baasbox.conf

[program:Baasbox]
directory =
command = /start
autostart = true
autorestart = true
startsecs = 5
user =
stdout_logfile = /var/log/supervisor/baasbox.log

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

supervisorctl reread

その後、このコマンドを実行します。

supervisorctl update

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

結論

この記事では、管理コンソールとREST APIを使用して、BaasBoxを使用してコンテンツ、ユーザー、アクセス許可を管理する方法を説明しました。 この記事で取り上げたトピックに加えて、BaasBoxにはさらに多くのものがあります。 BaasBox管理コンソールをさらに探索して、ファイルの管理、データベースのバックアップの取得と復元、APIエンドポイントの可用性の構成を可能にするセクションに慣れることができます。 さらに重要なことは、次のアプリケーションでBaasBoxを使い始める準備が整ったことです。

前の投稿:KerasとTensorFlowを使用して従業員の定着を予測するディープラーニングモデルを構築する方法
次の投稿:Python 3で* argsと** kwargsを使用する方法