So installieren und verwenden Sie BaasBox unter Ubuntu 14.04

Einführung

BaasBox ist eine Anwendung, die zusammen als Datenbankserver und Anwendungsserver fungiert. BaasBox bietet standardmäßig Backups für die Benutzeranmeldung, die Benutzerverwaltung, die Rollenverwaltung, die Inhaltsverwaltung, die Dateiverwaltung und die Datenbankverwaltung. Da all diese Funktionen über eine standardmäßige HTTP-REST-API verfügbar gemacht werden, können Entwickler von Web- und Mobilanwendungen BaasBox als Back-End zum Speichern von Daten verwenden. Entwickler können auch auf BaasBox basierende Mikrodienste erstellen, die von anderen Teilen ihrer Anwendungen genutzt werden.

In diesem Artikel erfahren Sie, wie Sie BaasBox installieren, Benutzer erstellen, mit der Administrationskonsole arbeiten und die REST-API erkunden, während Sie ein einfaches Anwendungs-Backend erstellen.

Voraussetzungen

  • Sie haben ein Droplet, auf dem Ubuntu 14.04 ausgeführt wird

  • Sie sind als Nicht-Root-Benutzer mit Administratorrechten bei Ihrem Server angemeldet. Informationen zum Einrichten finden Sie im Tutorial Initial Server Setup-Handbuch für Ubuntu 14.04.

  • Sie haben die offizielle Java 8 JRE von Oracle installiert. This tutorial erklärt, wie es geht TU das.

Schritt 1 - Installieren und Ausführen von BaasBox

Um BaasBox zu installieren, laden wir die neueste stabile Version von BaasBox von der offiziellen Website herunter. Sie können dies mit dem Befehl + wget + wie folgt tun:

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

Wir werden den Befehl "+ unzip " verwenden, um BaasBox aus der heruntergeladenen ZIP-Datei zu extrahieren. Falls Sie kein " unzip +" haben, installieren Sie es mit dem folgenden Befehl:

sudo apt-get install unzip

Extrahieren Sie nun den Inhalt der Zip-Datei:

unzip baasbox-stable.zip

Dieser Befehl extrahiert den Inhalt der zip-Datei in ein Verzeichnis mit dem Namen "+ baasbox- ", wobei "+" die neueste Version ist, zum Beispiel "+ 0.9.5 +". Geben Sie das neu erstellte Verzeichnis ein.

cd baasbox-

Dieses Verzeichnis enthält eine Datei mit dem Namen "+ start +", die ausgeführt werden muss, um BaasBox zu starten. Dazu müssen wir es zunächst mit dem folgenden Befehl ausführbar machen:

chmod +x ./start

Führen Sie dann den folgenden Befehl aus, um BaasBox zu starten:

./start

Es wird eine Ausgabe angezeigt, deren Ende ungefähr so ​​aussehen sollte:

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

Der hervorgehobene Teil in der obigen Ausgabe zeigt an, dass BaasBox jetzt ausgeführt wird und über den Port "+ 9000 +" auf der Maschine zugegriffen werden kann. Die BaasBox-Standardkonfiguration überwacht diesen Port auf allen Netzwerkschnittstellen. Die BaasBox ist ab sofort erreichbar unter:

  • + http: // localhost: 9000 + und + http: //127.0.0.1: 9000 + vom Server, auf dem es installiert ist (oder über einen SSH-Tunnel)

  • + http: //: 9000 + aus dem internen Netzwerk, in dem sich Ihr Server befindet (wenn es sich in einem internen Netzwerk befindet)

  • + http: //: 9000 + aus dem Internet, wenn ++ eine öffentlich zugängliche IP-Adresse ist.

Besuchen Sie "+ http: //: 9000 / console +" in Ihrem Browser, um auf die BaasBox-Administrationskonsole zuzugreifen, und Sie werden eine Oberfläche sehen, die wie folgt aussieht:

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

Lassen Sie uns bei laufender BaasBox eine Anwendung und einige Benutzer einrichten.

Schritt 2 - Erstellen einer Anwendung mit BaasBox

In diesem Artikel erstellen wir einen einfachen * Todo List Manager *, der:

  • Benutzern erlauben, sich anzumelden

  • Benutzern erlauben, sich anzumelden

  • Benutzern erlauben, mehrere Aufgabenlisten zu erstellen

  • Ermöglichen Sie Benutzern, ihre eigenen Aufgabenlisten abzurufen

  • Ermöglichen Sie Benutzern, ihre Aufgabenlisten zu ändern

  • Benutzern erlauben, ihre Aufgabenlisten zu löschen

  • Benutzern erlauben, ihre Aufgabenliste mit einem anderen Benutzer zu teilen

Beachten Sie beim Verfolgen Folgendes:

  • Wir werden zwei Benutzer mit den Benutzernamen "" und "" erstellen

  • Die Passwörter dieser Benutzer werden als "" und "" bezeichnet

  • Die Sitzungs-IDs dieser Benutzer werden als "" und "" bezeichnet.

Während Sie BaasBox über die REST-API verwalten können, ist es manchmal bequemer, dies über die Admin-Konsole zu tun, die sich, wie Sie in Schritt 2 gesehen haben, unter "+ http: //: 9000 / console +" befindet. Besuchen Sie diesen Link in Ihrem Browser. Da Sie es zum ersten Mal verwenden, melden Sie sich mit den Standardanmeldeinformationen an:

  • Standard-Benutzername: "+ admin"

  • Standard-Passwort: "+ admin"

  • Standard-App-Code: + 1234567890 +

image: http: //i.imgur.com/PJtOyId.png [Login für die BaasBox Admin-Konsole]

Nach dem Anmelden wird das BaasBox-Dashboard angezeigt:

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

Verwenden Sie die Administratorkonsole, um Benutzer für unsere Anwendung zu erstellen.

Schritt 3 - Benutzer anlegen

Die Benutzerverwaltung ist eine der hilfreichsten Funktionen von BaasBox. BaasBox hat einige eingebaute Benutzer, die privat sind und nicht bearbeitet werden können. Dies schließt den Benutzer "+ admin +" ein, den Sie beim Anmelden an der Administratorkonsole verwenden.

Mit BaasBox können Sie auch Rollen definieren und Benutzern zuweisen, um eine differenzierte Zugriffssteuerung zu implementieren. Standardmäßig hat BaasBox die folgenden 3 Rollen:

  • + administrator + - Diese Rolle hat vollständigen, uneingeschränkten Zugriff

  • + backoffice + - Diese Rolle gewährt Zugriff auf die von registrierten Benutzern erstellten Inhalte

  • + registered - Dies ist die Standardrolle für neu registrierte Benutzer

Zusätzlich zu diesen vorkonfigurierten Rollen können Sie eigene Rollen hinzufügen. Wenn eine neue Rolle erstellt wird, hat sie die gleichen Berechtigungen wie die oben erwähnte Rolle "+ registered +".

Sie können Benutzer in BaasBox entweder über die Administratorkonsole oder über die REST-API erstellen. In der Regel verwenden Sie die REST-API, um Benutzer programmgesteuert zu erstellen, z. B. über den Benutzeranmeldeprozess Ihrer App.

Wenn Sie Benutzer über die Administratorkonsole hinzufügen, können Sie eine benutzerdefinierte Rolle für sie festlegen. Wenn Sie sich jedoch über die integrierte REST-API anmelden, wird den neu erstellten Benutzern die Rolle "+ registered +" zugewiesen.

Um einen neuen Benutzer über die Admin-Konsole von BaasBox anzulegen, öffnen Sie das Menü * USERS> Users * in der Admin-Konsole und klicken Sie auf die Schaltfläche * New User *.

image: http: //i.imgur.com/NA1DjAW.png [BaasBox Admin Console - Neuer Benutzer]

Daraufhin wird ein Formular geöffnet, in das Sie die Details des Benutzers eingeben können, den Sie erstellen:

image: http: //i.imgur.com/83ewAxB.png [BaasBox Admin Console - Neuer Benutzer]

Die Felder * Benutzername *, * Passwort *, * Passwort erneut eingeben * und * Rolle * müssen ausgefüllt werden, alle anderen Felder sind optional. Beachten Sie, dass Sie in diesem Formular nach unten scrollen können, um bei Bedarf weitere Details einzugeben.

Setzen Sie den Benutzernamen für diesen Benutzer auf "+ user1 ". Sie können eine beliebige Rolle auswählen, aber die am häufigsten verwendete ist " registered +". Wenn Sie alle Details eingegeben haben, klicken Sie auf die Schaltfläche * Save changes * (Änderungen speichern), um die Benutzererstellung abzuschließen.

In einem späteren Abschnitt werden Benutzer mit der REST-API erstellt. Jetzt konfigurieren wir einen Ort für den Inhalt unserer Anwendung.

Schritt 4 - Eine Sammlung erstellen

BaasBox organisiert Ihre Inhalte in "+ Sammlungen ", die den Sammlungen ähneln, die von NoSQL-Datenbanken wie MongoDB angeboten werden. Sammlungen enthalten ` Dokumente ` desselben Typs. Benutzer, die mit SQL-Datenbanken vertraut sind, können eine "" - Auflistung als einer "" - Tabelle ähnlich betrachten. In ähnlicher Weise ähnelt ein " Dokument" einem "+ Datensatz".

Sammlungen können nur von Administratoren erstellt werden. Die häufigste Methode zum Erstellen einer Sammlung ist die Administratorkonsole. Dies ist jedoch auch über die REST-API möglich. In diesem Abschnitt erfahren Sie, wie Sie eine Sammlung über die Administratorkonsole erstellen.

Die gesamte Content-Management-Funktionalität steht in der Admin-Konsole in den Menüs "+ Sammlungen " und " Dokumente " im Abschnitt " DATEN +" zur Verfügung.

Öffnen Sie das Menü * DATA> Collections *. Es wird eine Seite angezeigt, auf der alle aktuellen Sammlungen in Ihrer Anwendung aufgelistet sind.

image: http: //i.imgur.com/rjsFjh4.png [BaasBox Admin Console - Sammlungen]

Um eine neue Sammlung zu erstellen, klicken Sie auf die Schaltfläche * Neue Sammlung *. Daraufhin wird ein Formular angezeigt, in dem Sie zur Eingabe des Sammlungsnamens aufgefordert werden.

Bild: http: //i.imgur.com/tcfq8gz.png [BaasBox Admin Console - Neue Kollektion]

Geben Sie "+ todos +" als Namen der Sammlung ein und klicken Sie auf "Änderungen speichern", um den Erstellungsprozess der Sammlung abzuschließen. Die Benutzer der Anwendung können nun mithilfe der REST-API auf diese Sammlung und ihre Dokumente in dieser Sammlung zugreifen. Schauen wir uns an, wie das funktioniert.

Schritt 5 - Verwenden der REST-API

Nachdem wir nun wissen, wie Sie mit der Admin-Konsole verschiedene Aufgaben ausführen können, sehen wir uns an, wie Sie dieselben Aufgaben mit der REST-API von BaasBox ausführen.

Die REST-API kann von verschiedenen Arten von Anwendungen verwendet werden, von Web- und Mobilanwendungen bis hin zu Konsolenanwendungen. In den folgenden Beispielen wird "+ curl +" verwendet, um Anforderungen zu simulieren. Sie können diese Beispiele abhängig von Ihrer Front-End-Plattform an Ihre Anforderungen anpassen.

Erstellen eines Benutzers mithilfe der REST-API

Das allgemeine Format des Befehls "+ curl +" zum Erstellen eines Benutzers lautet wie folgt:

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

In unserem Fall erstellen wir einen Benutzer mit dem Benutzernamen "+ user2 ". Wählen Sie ein beliebiges Passwort. Wir werden den Standardwert für den Header " X-BAASBOX-APPCODE " verwenden, der " 1234567890 +" ist. Mit diesen Werten wird unser Befehl:

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

Die Ausgabe zur Ausführung dieses Befehls sollte etwa so aussehen:

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}

Hier ist die formatierte Version der obigen Ausgabe:

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
}

Beachten Sie die hervorgehobenen Werte in der obigen Ausgabe. BaasBox generiert für jeden Benutzer eine eindeutige "+ id +". Sie verwenden diese ID, wenn Sie das Dokument dieses Benutzers über die REST-API abrufen, ändern oder löschen möchten.

Der zweite hervorgehobene Wert ist "+ X-BB-SESSION ". Dies ist die Sitzungs-ID, die in allen zukünftigen Abfragen von " user2 " enthalten sein muss. Wir werden in den folgenden Abschnitten auf diesen Wert als "+" verweisen.

Anmelden des Benutzers mithilfe der REST-API

Nachdem wir die Sitzungs-ID für "+ user2 " haben, erhalten wir eine für " user1 ", den Benutzer, den wir zuvor in der Admin-Konsole erstellt haben. Dazu melden wir uns mit der REST-API als " user1 " an. Das allgemeine Format des zum Anmelden verwendeten Befehls " curl +" lautet:

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

In unserem Fall lautet der Benutzername "+ user1 ", das Passwort ist das, was auch immer beim Erstellen von " user1 " verwendet wurde, und der BaasBox-App-Code lautet " 1234567890 +". Mit diesen Werten wird unser Befehl:

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

Die Ausgabe zur Ausführung dieses Befehls sollte etwa so aussehen:

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}

Hier ist die formatierte Version der obigen Ausgabe:

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
}

Der hervorgehobene Teil der obigen Antwort zeigt die Sitzungs-ID für "+ user1 ", die wir in allen zukünftigen Abfragen verwenden müssen, die " user1 " machen wird. Wir werden diesen Wert von nun an als "+" bezeichnen.

Erstellen eines Dokuments mit der REST-API

Erstellen wir zwei Dokumente in unserer Anwendung. Wir weisen ein Dokument "+ user1 " zu, dem Benutzer, den wir mit der Administratorkonsole erstellt haben, und wir weisen das andere Dokument " user2 +" zu, dem Benutzer, den wir über die REST-API erstellt haben. Die Struktur der von uns erstellten Dokumente sieht folgendermaßen aus:

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

Anhand der Struktur können wir erkennen, dass ein Dokument zwei Eigenschaften hat. Einer ist der Name der Aufgabenliste und der andere ist die Liste der Aufgaben in dieser Liste.

Das allgemeine Format des Befehls + curl + zum Erstellen eines neuen Dokuments lautet:

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

Beginnen wir mit der Erstellung eines Dokuments für "+ user1 ". In unserem Fall lautet der Name der Sammlung " todos +" und das Dokument, das wir einfügen möchten, sieht folgendermaßen aus:

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

Um sicherzustellen, dass das Dokument mit "+ user1 " verknüpft wird, verwenden wir die Sitzungs-ID von " user1 +", die wir erhalten haben, als wir diesen Benutzer in unserem System angemeldet haben.

Geben Sie den folgenden Befehl ein, um das Dokument für "+ user1 +" zu erstellen:

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:

Das Ausführen dieses Befehls führt zu einer Ausgabe ähnlich der folgenden:

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}

Hier ist die formatierte Version der obigen Ausgabe:

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
}

Wie bei den neuen Benutzern erstellt BaasBox für alle neuen Dokumente eine "+ id ", die im vorherigen Beispiel hervorgehoben ist. Notieren Sie sich diese " id ", da wir sie später verwenden werden, während Sie " user2 " Zugriff auf diese Liste gewähren. In den folgenden Abschnitten bezeichnen wir die ID dieses Dokuments als "+".

Führen Sie nun auf eigene Faust die folgenden Schritte aus:

  • Erstellen Sie eine weitere Liste für + user1 +

  • Erstellen Sie zwei Listen für + user2 +

Nach Abschluss dieser Schritte befinden sich insgesamt 4 Dokumente in der Sammlung "+ todos +". In den folgenden Abschnitten bezeichnen wir die IDs dieser Dokumente als:

  • {leer}

  • {leer}

  • {leer}

  • {leer}

Jetzt haben wir einige Daten, die wir verwenden können, um zu untersuchen, wie wir Daten mit der REST-API abfragen.

Ein einzelnes Dokument mit der REST-API abrufen

Das allgemeine Format des Befehls "+ curl", mit dem ein Dokument anhand seiner "+ id" abgerufen wird, lautet:

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

Wenn Sie das erste Dokument abrufen möchten, das mit "+ user1 " (mit den Anmeldeinformationen von " user1 +") erstellt wurde, sollte der Befehl folgendermaßen lauten:

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

Wenn Sie diesen Befehl ausführen, erhalten Sie eine Ausgabe ähnlich der folgenden:

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}

Hier ist die formatierte Version der Antwort:

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
}

Nachdem Sie nun wissen, wie Sie ein einzelnes Dokument abrufen können, wiederholen Sie den Vorgang, mit dem Unterschied, dass Sie das Dokument diesmal mit der Sitzungs-ID "+ user2 +" abrufen:

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

Wenn Sie diesen Befehl ausführen, wird eine Ausgabe angezeigt, die der folgenden ähnelt:

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}

Hier ist dieselbe Ausgabe, die zur besseren Lesbarkeit formatiert ist:

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
}

Wie Sie sehen, ist der Abrufvorgang fehlgeschlagen, da "+ user2 " dieses Dokument nicht erstellt hat und keinen Zugriff auf dieses Dokument hatte. Wenn Sie versuchen, den Befehl als " user2 " auszuführen, aber mit der " id " des von " user2 +" erstellten Dokuments, können Sie dieses Dokument problemlos abrufen.

Abrufen aller Dokumente mithilfe der REST-API

Das allgemeine Format des Befehls "+ curl +" zum Abrufen aller zugänglichen Dokumente aus einer Sammlung lautet:

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

Beachten Sie, dass dieser Befehl nur die Dokumente zurückgibt, auf die der Benutzer Zugriff hat. Versuchen wir beispielsweise, diesen Befehl als "+ user1 +" auszuführen:

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

Wenn Sie diesen Befehl ausführen, erhalten Sie eine Ausgabe ähnlich der folgenden:

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}

Hier ist die formatierte Version dieser Ausgabe:

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
}

Wie Sie der Ausgabe entnehmen können, wurden nur die Dokumente zurückgegeben, auf die + user1 + Zugriff hatte. Wenn Sie dieselbe Abfrage mit der Sitzungs-ID von "+ user2 +" ausführen, wird ein anderer Satz von Dokumenten angezeigt.

Aktualisieren eines Dokuments mithilfe der REST-API

Das allgemeine Format des Befehls "+ curl +" zum Aktualisieren eines Dokuments lautet:

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

Beim Aktualisieren eines Dokuments sind zwei Dinge zu beachten:

  • Nur der Dokumentbesitzer kann ein Dokument ändern

  • Bei einem Update * werden die alten und die neuen Dokumente * nicht zusammengeführt. Es ersetzt das alte Dokument durch das neue. Dies bedeutet, dass diese Felder verloren gehen, wenn der Aktualisierungsbefehl Dokumente enthält, bei denen einige Felder in der Originalversion fehlen.

Verwenden Sie diesen Befehl, um das Dokument mit der ID "++" mit folgendem Inhalt zu aktualisieren:

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

Der Befehl für dieses Update lautet:

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:

Wenn Sie diesen Befehl ausführen, erhalten Sie eine Ausgabe ähnlich der folgenden:

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}

Hier ist dieselbe Ausgabe, formatiert:

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
}

Wie Sie sehen, wurde das Dokument mit den neuen Informationen aktualisiert.

Dokument mit der REST-API löschen

Das allgemeine Format des Befehls + curl + zum Löschen eines Dokuments lautet:

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

Nur der Dokumenteneigentümer und Benutzer mit der Berechtigung "+ löschen +" für ein Dokument können dieses Dokument löschen.

Verwenden Sie diesen Befehl, um das Dokument mit der ID "++" wie folgt zu löschen:

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

Wenn Sie diesen Befehl ausführen, erhalten Sie die folgende Ausgabe:

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

Dies zeigt an, dass das Dokument erfolgreich gelöscht wurde. Jeder zukünftige Versuch, mit "+ id +" auf dieses Dokument zuzugreifen, schlägt jetzt fehl.

Gewähren des Zugriffs auf einen anderen Benutzer mithilfe der REST-API

Wir haben gesehen, wie BaasBox standardmäßig verhindert, dass Benutzer auf Dokumente zugreifen, die nicht von ihnen erstellt wurden. Manchmal ist es jedoch erforderlich, mehreren Benutzern Zugriff auf ein Dokument zu gewähren. Lassen Sie uns "+ user2 " den Zugriff auf das Dokument mit der ID "+" gewähren.

Das allgemeine Format des Befehls "+ curl +" zum Gewähren des Zugriffs auf ein Dokument lautet:

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

Dieser Befehl funktioniert nur, wenn er von einem Benutzer ausgeführt wird, der vollständigen Zugriff auf dieses Dokument hat. Der Platzhalter "++" kann einen der folgenden 4 Werte haben:

  • read

  • aktualisieren

  • löschen

  • all

Führen Sie den folgenden Befehl mit der Sitzungs-ID "+ user1 " aus, um " user2 " Lesezugriff auf das Dokument mit der ID "+" zu gewähren:

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

Wenn Sie diesen Befehl ausführen, erhalten Sie die folgende Ausgabe:

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

Dies zeigt an, dass + user2 + nun Zugriff auf das Dokument ++ hat. Wenn Sie versuchen, mit "+ user2 +" auf dieses Dokument zuzugreifen, werden jetzt die Dokumentdetails anstelle einer Fehlerantwort angezeigt

Schritt 6 - Verwenden von Supervisor, um die Anwendung am Laufen zu halten

Wenn eine Anwendung lange ausgeführt wird, besteht immer das Risiko, dass sie nicht mehr ausgeführt wird. Dies kann verschiedene Ursachen haben, z. B. Anwendungsfehler, Neustart des Systems usw. Es wird empfohlen, die Anwendung so zu konfigurieren, dass sie bei einem unerwarteten Herunterfahren neu gestartet wird. Dies minimiert den Verwaltungsaufwand für die Verwaltung der Anwendung.

Für diese Anwendung verwenden wir Supervisor, wodurch die Verwaltung von Anwendungen mit langer Laufzeit vereinfacht wird. Wenn Sie nicht mit Supervisor vertraut sind, können Sie mehr über how lesen um Supervisor unter Ubuntu hier zu installieren und zu verwalten.

Installieren Sie zuerst Supervisor:

sudo apt-get install supervisor

Damit Supervisor unsere Anwendung verwalten kann, müssen wir eine Konfigurationsdatei erstellen. Wir werden diese Datei + baasbox.conf + nennen und sie im Verzeichnis + / etc / supervisor / conf.d + ablegen.

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

Geben Sie Folgendes in die Datei ein und ersetzen Sie die markierten Abschnitte entsprechend.

/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

Wir müssen nun den Supervisor über diese Änderungen informieren und ihn dazu bringen, diese Änderungen zu verwenden. Führen Sie den folgenden Befehl aus:

supervisorctl reread

Führen Sie dann diesen Befehl aus:

supervisorctl update

Wenn Ihre Anwendung aus irgendeinem Grund heruntergefahren wird, stellt Supervisor sicher, dass sie neu gestartet wird, ohne dass ein manueller Eingriff erforderlich ist.

Fazit

In diesem Artikel haben wir gesehen, wie Sie mit BaasBox Inhalte, Benutzer und Berechtigungen mithilfe der Administratorkonsole und der REST-API verwalten. Neben den in diesem Artikel behandelten Themen bietet BaasBox noch viel mehr. Sie können die BaasBox-Administratorkonsole genauer untersuchen, um sich mit Abschnitten vertraut zu machen, in denen Sie Dateien verwalten, Datenbanksicherungen erstellen und wiederherstellen sowie die Verfügbarkeit von API-Endpunkten konfigurieren können. Noch wichtiger ist, dass Sie jetzt bereit sind, BaasBox in Ihrer nächsten Anwendung zu verwenden.