Comment installer et utiliser BaasBox sur Ubuntu 14.04

introduction

BaasBox est une application qui agit à la fois comme serveur de base de données et serveur d’applications. BaasBox est prêt à l’emploi: il permet l’inscription, la gestion des utilisateurs, la gestion des rôles, la gestion du contenu, la gestion de fichiers et la gestion de bases de données avec des sauvegardes. Toutes ces fonctionnalités étant exposées via une API HTTP REST standard, les développeurs d’applications Web et mobiles peuvent utiliser BaasBox comme back-end pour stocker des données. Les développeurs peuvent également créer des micro-services basés sur BaasBox qui sont consommés par d’autres parties de leurs applications.

Cet article vous guide lors de l’installation de BaasBox, de la création d’utilisateurs, de l’utilisation de la console d’administration et de l’exploration de l’API REST lors de la création d’un backend d’application simple.

Conditions préalables

Étape 1 - Installation et exécution de BaasBox

Pour installer BaasBox, nous téléchargeons la dernière version stable de BaasBox à partir du site officiel. Vous pouvez le faire en utilisant la commande + wget + comme suit:

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

Nous allons utiliser la commande + unzip + pour extraire BaasBox du fichier zip téléchargé. Au cas où vous n’auriez pas + unzip +, installez-le en utilisant la commande suivante:

sudo apt-get install unzip

Maintenant, extrayez le contenu du fichier zip:

unzip baasbox-stable.zip

Cette commande extrait le contenu du fichier zip dans un répertoire nommé + baasbox- +++ sera la dernière version, par exemple + 0.9.5 +. Entrez le répertoire nouvellement créé.

cd baasbox-

Ce répertoire contient un fichier nommé + start + qui doit être exécuté pour démarrer BaasBox. Pour ce faire, nous devons d’abord en faire un exécutable à l’aide de la commande suivante:

chmod +x ./start

Ensuite, pour démarrer BaasBox, exécutez la commande suivante:

./start

Vous verrez une sortie dont la fin devrait ressembler à ceci:

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

La partie en surbrillance dans la sortie ci-dessus indique que BaasBox est en cours d’exécution et peut être consulté sur le port + 9000 + de la machine. La configuration BaasBox par défaut écoute ce port sur toutes les interfaces réseau. Le moyen que BaasBox est maintenant accessible à:

  • + http: // localhost: 9000 + et + http: //127.0.0.1: 9000 + depuis le serveur sur lequel il est installé (ou via un tunnel SSH)

  • + http: //: 9000 + depuis le réseau interne sur lequel se trouve votre serveur (s’il se trouve sur un réseau interne)

  • + http: //: 9000 + à partir d’Internet si ++ est une adresse IP accessible au public.

Visitez + http: //: 9000 / console + dans votre navigateur pour accéder à la console d’administration BaasBox. Une interface semblable à celle ci-dessous s’affichera:

image: http: //i.imgur.com/G1LdkBf.png [Console d’administration BaasBox]

Avec BaasBox en cours d’exécution, configurons une application et certains utilisateurs.

Étape 2 - Création d’une application avec BaasBox

Dans cet article, nous allons créer un * Todo List Manager * simple qui devrait:

  • Autoriser les utilisateurs à s’inscrire

  • Autoriser les utilisateurs à se connecter

  • Autoriser les utilisateurs à créer plusieurs listes de tâches

  • Autoriser les utilisateurs à récupérer leurs propres listes de tâches

  • Autoriser les utilisateurs à modifier leurs listes de tâches

  • Autoriser les utilisateurs à supprimer leurs listes de tâches

  • Autoriser les utilisateurs à partager leur liste de tâches avec un autre utilisateur

En suivant, veuillez noter les points suivants:

  • Nous allons créer deux utilisateurs avec les noms d’utilisateur ` et `

  • Les mots de passe de ces utilisateurs seront appelés ` et `

  • Les identifiants de session de ces utilisateurs seront appelés «» et «».

Bien que vous puissiez gérer BaasBox via l’API REST, il est parfois plus pratique de le faire à l’aide de la console d’administration, qui, comme vous l’avez vu à l’étape 2, se trouve sur + http: //: 9000 / console +. Visitez ce lien dans votre navigateur. Comme c’est la première fois que vous l’utilisez, connectez-vous avec les informations d’identification par défaut:

  • Nom d’utilisateur par défaut: + admin +

  • Mot de passe par défaut: + admin

  • Code d’application par défaut: + 1234567890 +

image: http: //i.imgur.com/PJtOyId.png [Connexion à la console d’administration BaasBox]

Une fois connecté, vous verrez le tableau de bord BaasBox:

image: http: //i.imgur.com/K3UxSAQ.png [Tableau de bord BaasBox]

Utilisons la console d’administration pour créer des utilisateurs pour votre application.

Étape 3 - Création d’utilisateurs

La gestion des utilisateurs est l’une des fonctionnalités les plus utiles de BaasBox. BaasBox a certains utilisateurs intégrés qui sont privés et ne peuvent pas être édités. Cela inclut l’utilisateur + admin + que vous utilisez lors de la connexion à la console d’administration.

BaasBox vous permet également de définir des rôles et de les affecter à des utilisateurs afin de mettre en œuvre un contrôle d’accès détaillé. Par défaut, BaasBox a les 3 rôles suivants:

  • + administrateur + - ce rôle dispose d’un accès complet et illimité

  • + backoffice + - ce rôle permet d’accéder au contenu créé par les utilisateurs enregistrés.

  • + registered - c’est le rôle par défaut pour les utilisateurs nouvellement enregistrés

Vous pouvez ajouter vos propres rôles en plus de ceux préconfigurés. Lorsqu’un nouveau rôle est créé, il dispose des mêmes autorisations que le rôle + registered + mentionné ci-dessus.

Vous pouvez créer des utilisateurs dans BaasBox via la console d’administration ou via l’API REST. En règle générale, vous utiliserez l’API REST pour créer des utilisateurs par programme, par exemple via le processus d’inscription de votre application.

Lorsque vous ajoutez des utilisateurs via la console d’administration, vous pouvez définir un rôle personnalisé pour eux. Toutefois, lors de l’utilisation de l’API REST intégrée pour s’inscrire, les utilisateurs nouvellement créés se voient attribuer le rôle + registered +.

Pour créer un nouvel utilisateur à partir de la console d’administration de BaasBox, ouvrez le menu * USERS> Utilisateurs * de la console d’administration et cliquez sur le bouton * Nouvel utilisateur *.

image: http: //i.imgur.com/NA1DjAW.png [Console d’administration BaasBox - Nouvel utilisateur]

Ceci ouvre un formulaire où vous pouvez renseigner les informations de l’utilisateur que vous créez:

image: http: //i.imgur.com/83ewAxB.png [Console d’administration BaasBox - Nouvel utilisateur]

Les champs * Nom d’utilisateur *, * Mot de passe *, * Confirmer le mot de passe * et * Rôle * sont obligatoires, tandis que tous les autres champs sont facultatifs. Notez que vous pouvez faire défiler ce formulaire pour ajouter des informations supplémentaires, le cas échéant.

Définissez le nom d’utilisateur de cet utilisateur sur + utilisateur1 +. Vous pouvez sélectionner n’importe quel rôle, mais le plus couramment utilisé est + registered +. Une fois que vous avez entré tous les détails, cliquez sur le bouton * Enregistrer les modifications * pour terminer le processus de création de l’utilisateur.

Nous allons créer des utilisateurs à l’aide de l’API REST dans une section ultérieure. Maintenant, configurons un emplacement pour le contenu de notre application.

Étape 4 - Création d’une collection

BaasBox organise votre contenu dans + collections +, qui sont similaires aux collections proposées par les bases de données NoSQL telles que MongoDB. Les collections contiennent + documents + du même type. Les utilisateurs familiarisés avec les bases de données SQL peuvent considérer qu’une collection 'est à peu près similaire à une table'. De même, un + document est un peu comme un` + enregistrement`.

Les collections ne peuvent être créées que par des administrateurs. Bien que le moyen le plus courant de créer une collection utilise la console d’administration, il est également possible de le faire à l’aide de l’API REST. Dans cette section, nous verrons comment créer une collection à partir de la console d’administration.

Toutes les fonctionnalités de gestion de contenu sont disponibles dans la console d’administration dans les menus + Collections + et + Documents + dans la section + DATA +.

Ouvrez le menu * DATA> Collections *. Une page répertoriant toutes les collections actuelles de votre application s’affiche.

image: http: //i.imgur.com/rjsFjh4.png [Console d’administration BaasBox - Collections]

Pour créer une nouvelle collection, cliquez sur le bouton * Nouvelle collection *. Cela affiche un formulaire vous demandant le nom de la collection.

image: http: //i.imgur.com/tcfq8gz.png [Console d’administration BaasBox - Nouvelle collection]

Entrez + todos + comme nom de la collection et cliquez sur * Enregistrer les modifications * pour achever le processus de création de la collection. Les utilisateurs de l’application peuvent désormais accéder à cette collection et à leurs documents à l’aide de l’API REST. Voyons comment cela fonctionne.

Étape 5 - Utilisation de l’API REST

Maintenant que nous savons utiliser la console d’administration pour effectuer diverses tâches, voyons comment effectuer les mêmes tâches à l’aide de l’API REST de BaasBox.

L’API REST peut être utilisée par différents types d’applications, des applications Web et mobiles aux applications de console. Nous utiliserons + curl + pour simuler des requêtes dans les exemples suivants. Vous pouvez adapter ces exemples à vos besoins en fonction de votre plate-forme frontale.

Création d’un utilisateur à l’aide de l’API REST

Le format général de la commande + curl + utilisé pour créer un utilisateur est le suivant:

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

Dans notre cas, nous allons créer un utilisateur avec le nom d’utilisateur + utilisateur2 +. Choisissez n’importe quel mot de passe que vous aimez. Nous allons utiliser la valeur par défaut pour l’en-tête + X-BAASBOX-APPCODE + qui est + 1234567890 +. En utilisant ces valeurs, notre commande devient:

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

Le résultat de l’exécution de cette commande devrait être similaire à:

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}

Voici la version formatée de la sortie ci-dessus:

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
}

Notez les valeurs en surbrillance dans la sortie ci-dessus. BaasBox génère un + id + unique pour chaque utilisateur. Vous utiliserez cet ID pour extraire, modifier ou supprimer le document de cet utilisateur particulier via l’API REST.

La deuxième valeur en surbrillance est le + X-BB-SESSION +, qui est l’ID de session devant être présent dans toutes les requêtes futures que + user2 + fera. Nous ferons référence à cette valeur par ++ dans les sections suivantes.

Connexion de l’utilisateur à l’aide de l’API REST

Maintenant que nous avons l’identifiant de session pour «+ utilisateur2 », obtenons-en un pour « utilisateur1 », l’utilisateur que nous avons créé précédemment dans la console d’administration. Pour ce faire, nous nous connecterons en tant que ` utilisateur1 ` à l’aide de l’API REST. Le format général de la commande ` curl +` utilisée pour la connexion est le suivant:

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

Dans notre cas, le nom d’utilisateur est + user1 +, le mot de passe est celui qui a été utilisé lors de la création de + user1 + et le code d’application BaasBox est + 1234567890 +. En utilisant ces valeurs, notre commande devient:

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

Le résultat de l’exécution de cette commande devrait être similaire à:

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}

Voici la version formatée de la sortie ci-dessus:

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
}

La partie en surbrillance de la réponse ci-dessus montre l’ID de session pour + user1 + que nous devons utiliser dans toutes les requêtes futures que + user1 + fera. Nous appellerons cette valeur «++» à partir de maintenant.

Création d’un document à l’aide de l’API REST

Créons deux documents dans notre application. Nous assignerons un document à + ​​user1 +, l’utilisateur créé à l’aide de la console d’administration, et nous assignerons l’autre document à + ​​user2 +, l’utilisateur que nous avons créé via l’API REST. La structure des documents que nous allons créer ressemblera à l’exemple suivant:

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

En regardant la structure, nous pouvons voir qu’un document aura deux propriétés. L’un est le nom de la liste des tâches et l’autre, la liste des tâches de cette liste.

Le format général de la commande + curl + utilisé pour créer un nouveau document est le suivant:

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

Commençons par créer un document pour + user1 +. Dans notre cas, le nom de la collection est + todos + et le document que nous voulons insérer ressemble à ceci:

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

Pour que le document soit associé à + ​​user1 +, nous utilisons l’ID de session de + user1 + que nous avons obtenu lorsque nous avons connecté cet utilisateur à notre système.

Entrez la commande suivante pour créer le document pour + 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:

L’exécution de cette commande génère une sortie similaire à celle-ci:

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}

Voici la version formatée de la sortie ci-dessus:

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
}

Comme pour les nouveaux utilisateurs, BaasBox crée un + id +, qui est mis en surbrillance dans l’exemple précédent, pour tous les nouveaux documents. Notez ce + id + car nous l’utiliserons plus tard en donnant à + ​​utilisateur2 + accès à cette liste. Dans les sections suivantes, nous ferons référence à l’id de ce document en tant que ++.

Maintenant, utilisez la même méthode pour effectuer vous-même les tâches suivantes:

  • Créer une autre liste pour + user1 +

  • Créez deux listes pour + user2 +

Une fois ces étapes terminées, vous disposerez d’un total de 4 documents dans la collection + todos +. Dans les sections suivantes, nous ferons référence aux ID de ces documents comme suit:

  • {Vide}

  • {Vide}

  • {Vide}

  • {Vide}

Nous disposons maintenant de certaines données que nous pouvons utiliser pour étudier la manière dont nous interrogeons les données à l’aide de l’API REST.

Récupération d’un document unique à l’aide de l’API REST

Le format général de la commande + curl utilisée pour extraire un document avec son` + id` est:

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

Si nous voulons récupérer le premier document créé par + utilisateur1 + (avec les informations d’identification de + utilisateur1 + `), la commande doit être:

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

L’exécution de cette commande nous donne une sortie similaire à celle-ci:

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}

Voici la version formatée de la réponse:

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
}

Maintenant que vous savez comment récupérer un seul document, essayez de refaire la même chose, sauf que cette fois, récupérez le document à l’aide de l’identifiant de session `+ user2 + ':

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

L’exécution de cette commande affiche une sortie similaire à celle-ci:

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}

Voici le même résultat, formaté pour plus de lisibilité:

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
}

Comme vous pouvez le constater, parce que + user2 + n’a pas créé ce document et n’a pas eu accès à ce document, l’opération d’extraction a échoué. Si vous essayez d’exécuter la commande en tant que + user2 + mais avec le + id + du document créé par + user2 +, vous pourrez extraire ce document sans problème.

Récupération de tous les documents à l’aide de l’API REST

Le format général de la commande + curl + utilisé pour extraire tous les documents accessibles d’une collection est le suivant:

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

Gardez à l’esprit que cette commande ne renverra que les documents auxquels l’utilisateur a accès. Par exemple, essayons d’exécuter cette commande en tant que + utilisateur1 +:

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

L’exécution de cette commande nous donne une sortie similaire à celle-ci:

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}

Voici la version formatée de cette sortie:

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
}

Comme vous pouvez le constater, seuls les documents auxquels + utilisateur1 + avait accès ont été renvoyés. Si vous exécutez la même requête à l’aide de l’identifiant de session appartenant à + ​​utilisateur2 +, vous verrez un ensemble de documents différent.

Mise à jour d’un document à l’aide de l’API REST

Le format général de la commande + curl + utilisée pour mettre à jour un document est le suivant:

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

Il y a deux choses à garder à l’esprit lorsque vous essayez de mettre à jour un document:

  • Seul le propriétaire du document peut modifier un document

  • Une mise à jour * ne fusionne pas l’ancien et le nouveau document *. Il * remplace * l’ancien document par le nouveau. Cela signifie que si la commande de mise à jour inclut des documents avec certains champs manquants dans la version d’origine, ces champs seront perdus.

Utilisons cette commande pour mettre à jour le document avec l’id ++ avec le contenu suivant:

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

La commande pour effectuer cette mise à jour est la suivante:

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:

L’exécution de cette commande nous donne une sortie similaire à celle-ci:

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}

Voici le même résultat, formaté:

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
}

Comme vous pouvez le constater, le document a été mis à jour avec les nouvelles informations.

Suppression d’un document à l’aide de l’API REST

Le format général de la commande + curl + utilisée pour supprimer un document est le suivant:

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

Seuls le propriétaire du document et les utilisateurs disposant de l’autorisation + delete sur un document peuvent supprimer ce document.

Utilisons cette commande pour supprimer le document portant l’id ++ comme suit:

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

L’exécution de cette commande donne le résultat suivant:

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

Cela indique que le document a été supprimé avec succès. Toute tentative future d’accéder à ce document par + id + échouera maintenant.

Octroi de l’accès à un autre utilisateur à l’aide de l’API REST

Nous avons vu comment, par défaut, BaasBox empêche les utilisateurs d’accéder à des documents qu’ils n’ont pas créés. Cependant, il est parfois nécessaire de donner à plusieurs utilisateurs l’accès à un document. Accordons l’accès + utilisateur2 + au document portant l’id ++.

Le format général de la commande + curl + utilisée pour accorder l’accès à un document est le suivant:

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

Cette commande ne fonctionnera que si elle est exécutée par un utilisateur ayant un accès complet à ce document. L’espace réservé ++ peut avoir l’une des 4 valeurs suivantes:

  • read

  • mise à jour

  • effacer

  • all

Pour accorder un accès en lecture + user2 + au document portant l’id ++, exécutez la commande suivante en utilisant l’ID de session + user1 +:

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

L’exécution de cette commande donne le résultat suivant:

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

Cela indique que + utilisateur2 + a maintenant accès au document ++. Si vous essayez d’accéder à ce document en tant que + user2 +, vous verrez maintenant les détails du document au lieu d’une réponse d’erreur

Étape 6 - Utiliser Supervisor pour maintenir l’application en marche

Chaque fois que vous utilisez une application de longue durée, il y a toujours un risque qu’elle cesse de fonctionner. Cela peut se produire pour diverses raisons, telles qu’une erreur d’application, un redémarrage du système, etc. Il est recommandé de configurer l’application pour qu’elle redémarre en cas d’arrêt inattendu. Cela minimise la charge administrative liée à la maintenance de l’application.

Pour cette application, nous utiliserons Supervisor, ce qui facilite la gestion des applications à exécution longue. Si vous n’êtes pas familier avec Supervisor, vous pouvez en savoir plus sur how installer et gérer Supervisor sur Ubuntu ici.

Tout d’abord, installez Supervisor:

sudo apt-get install supervisor

Pour que Supervisor gère notre application, nous devons créer un fichier de configuration. Nous allons nommer ce fichier + baasbox.conf + et le placer dans le répertoire + / etc / supervisor / conf.d +.

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

Entrez les informations suivantes dans le fichier, en remplaçant les sections en surbrillance, le cas échéant.

/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

Nous devons maintenant informer le superviseur de ces modifications et lui demander de les utiliser. Exécutez la commande suivante:

supervisorctl reread

Puis lancez cette commande:

supervisorctl update

Désormais, chaque fois que votre application s’arrêtera pour une raison quelconque, Supervisor veillera à ce qu’elle redémarre sans intervention manuelle.

Conclusion

Dans cet article, nous avons vu comment utiliser BaasBox pour gérer le contenu, les utilisateurs et les autorisations à l’aide de la console d’administration et de l’API REST. En plus des sujets abordés dans cet article, BaasBox offre bien plus. Vous pouvez explorer davantage la console d’administration BaasBox pour vous familiariser avec les sections vous permettant de gérer les fichiers, d’effectuer et de restaurer des sauvegardes de base de données et de configurer la disponibilité des points de terminaison de l’API. Plus important encore, vous êtes maintenant prêt à utiliser BaasBox dans votre prochaine application.