Как установить и использовать BaasBox в Ubuntu 14.04

Вступление

BaasBox - это приложение, которое работает как сервер базы данных и сервер приложений вместе. BaasBox из коробки обеспечивает регистрацию пользователей, управление пользователями, управление ролями, управление контентом, управление файлами и базами данных с помощью резервных копий. Поскольку все эти функциональные возможности доступны через стандартный HTTP REST API, разработчики веб-приложений и мобильных приложений могут использовать BaasBox в качестве серверной части для хранения данных. Разработчики также могут создавать микроуслуги на основе BaasBox, которые используются другими частями их приложений.

В этой статье рассказывается об установке BaasBox, создании пользователей, работе с административной консолью и изучении REST API при создании простого бэкэнда приложения.

Предпосылки

  • У вас есть дроплет под управлением Ubuntu 14.04

  • Вы вошли на свой сервер как пользователь без полномочий root с правами администратора. См. Учебное руководство Initial руководство по настройке сервера для Ubuntu 14.04, чтобы настроить это.

  • Вы установили официальную Java 8 JRE от Oracle. Thisutorial объясняет, как сделай это.

Шаг 1 - Установка и запуск BaasBox

Чтобы установить BaasBox, мы загружаем последнюю стабильную версию BaasBox с официального сайта. Вы можете сделать это используя команду + wget + следующим образом:

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

Мы будем использовать команду + unzip +, чтобы извлечь BaasBox из загруженного zip-файла. Если у вас нет + unzip +, установите его с помощью следующей команды:

sudo apt-get install unzip

Теперь извлеките содержимое zip-файла:

unzip baasbox-stable.zip

Эта команда извлекает содержимое zip-файла в каталог с именем + baasbox- +, где ++ будет последней версией, например, + 0.9.5 +. Введите новый созданный каталог.

cd baasbox-

Этот каталог содержит файл с именем + start +, который необходимо выполнить, чтобы запустить BaasBox. Чтобы сделать это, нам сначала нужно сделать его исполняемым с помощью следующей команды:

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 теперь доступен по адресу:

  • + http: // localhost: 9000 + и + http: //127.0.0.1: 9000 + с сервера, на котором он установлен (или через туннель SSH)

  • + http: //: 9000 + из внутренней сети, в которой находится ваш сервер (если он находится во внутренней сети)

  • + http: //: 9000 + из Интернета, если ++ является публично доступным IP-адресом.

Посетите + http: //: 9000 / console + в вашем браузере, чтобы получить доступ к консоли администрирования BaasBox, и вы увидите интерфейс, который выглядит как на следующем рисунке:

изображение: http: //i.imgur.com/G1LdkBf.png [BaasBox Admin Console]

Запустив BaasBox, давайте настроим приложение и некоторых пользователей.

Шаг 2 - Создание приложения с BaasBox

В этой статье мы создадим простой * Todo List Manager *, который должен:

  • Разрешить пользователям регистрироваться

  • Разрешить пользователям войти в систему

  • Разрешить пользователям создавать несколько списков задач

  • Разрешить пользователям получать свои собственные списки задач

  • Разрешить пользователям изменять свои списки задач

  • Разрешить пользователям удалять свои списки задач

  • Разрешить пользователям делиться своим списком задач с другим пользователем

Следуя далее, обратите внимание на следующее:

  • Мы создадим двух пользователей с именами пользователей ` и `

  • Пароли этих пользователей будут называться ` и `.

  • Идентификаторы сеансов этих пользователей будут называться ` и `.

Хотя вы можете управлять BaasBox через REST API, иногда это удобнее сделать с помощью консоли администратора, которая, как вы видели в шаге 2, находится по адресу + http: //: 9000 / console +. Перейдите по этой ссылке в вашем браузере. Поскольку вы используете его впервые, войдите в систему с учетными данными по умолчанию:

  • Имя пользователя по умолчанию: + admin +

  • Пароль по умолчанию: + admin

  • Код приложения по умолчанию: + 1234567890 +

изображение: http: //i.imgur.com/PJtOyId.png [Вход в консоль администратора BaasBox]

После входа вы увидите панель инструментов BaasBox:

изображение: http: //i.imgur.com/K3UxSAQ.png [BaasBox Dashboard]

Давайте использовать консоль администратора для создания пользователей для нашего приложения.

Шаг 3 - Создание пользователей

Управление пользователями - одна из самых полезных функций BaasBox. BaasBox имеет несколько встроенных пользователей, которые являются частными и не могут быть изменены. Это включает в себя пользователя + admin +, который вы используете при входе в консоль администратора.

BaasBox также позволяет вам определять роли и назначать их пользователям для реализации детального контроля доступа. По умолчанию BaasBox имеет следующие 3 роли:

  • + administrator + - эта роль имеет полный, неограниченный доступ

  • + backoffice + - эта роль предоставляет доступ к контенту, созданному зарегистрированными пользователями

  • + зарегистрирован - это роль по умолчанию для новых зарегистрированных пользователей

Вы можете добавить свои собственные роли в дополнение к этим предварительно настроенным. Когда создается новая роль, она имеет те же разрешения, что и роль «+ зарегистрирован +», упомянутая выше.

Вы можете создавать пользователей в BaasBox либо через консоль администратора, либо через REST API. Обычно вы используете REST API для создания пользователей программно, например, через процесс регистрации пользователей в вашем приложении.

Когда вы добавляете пользователей через консоль администратора, вы можете установить для них пользовательскую роль. Тем не менее, при использовании встроенного REST API для регистрации вновь созданным пользователям назначается роль «+ зарегистрированный +».

Чтобы создать нового пользователя из консоли администратора BaasBox, откройте меню * USERS> Users * в консоли администратора и нажмите кнопку * New User *.

изображение: http: //i.imgur.com/NA1DjAW.png [Консоль администратора BaasBox - новый пользователь]

Откроется форма, в которой вы можете заполнить данные о пользователе, которого вы создаете:

изображение: http: //i.imgur.com/83ewAxB.png [Консоль администратора BaasBox - новый пользователь]

Поля * Имя пользователя *, * Пароль *, * Повторить ввод пароля * и * Роль * обязательны для заполнения, а все остальные поля являются необязательными. Обратите внимание, что вы можете прокрутить вниз в этой форме, чтобы заполнить дополнительные детали, если вам нужно.

Установите имя пользователя для этого пользователя на + user1 +. Вы можете выбрать любую роль, но наиболее часто используемая - это «+ зарегистрирован +». После ввода всех данных нажмите кнопку * Сохранить изменения *, чтобы завершить процесс создания пользователя.

Мы создадим пользователей с помощью REST API в следующем разделе. Теперь давайте настроим место для контента нашего приложения.

Шаг 4 - Создание коллекции

BaasBox организует ваш контент в + collection +, который подобен коллекциям, предлагаемым базами данных NoSQL, такими как MongoDB. Коллекции содержат + документы + одного типа. Пользователи, знакомые с базами данных SQL, могут считать + collection приблизительно похожим на` + table`. Точно так же + document чем-то напоминает` + record`.

Коллекции могут создавать только администраторы. Хотя наиболее распространенный способ создания коллекции - с консоли администратора, это также можно сделать с помощью REST API. В этом разделе мы рассмотрим, как создать коллекцию из консоли администратора.

Все функции управления контентом доступны в консоли администратора в меню + Collections + и + Documents + в разделе + DATA +.

Откройте меню * DATA> Collections *. Вы увидите страницу со списком всех текущих коллекций в вашем приложении.

изображение: http: //i.imgur.com/rjsFjh4.png [Консоль администратора BaasBox - Коллекции]

Чтобы создать новую коллекцию, нажмите кнопку * Новая коллекция *. Появится форма, запрашивающая у вас имя коллекции.

изображение: http: //i.imgur.com/tcfq8gz.png [Консоль администратора BaasBox - Новая коллекция]

Введите + todos + в качестве имени коллекции и нажмите * Сохранить изменения *, чтобы завершить процесс создания коллекции. Пользователи приложения теперь могут получить доступ к этой коллекции и своим документам в этой коллекции с помощью API REST. Давайте посмотрим, как это работает.

Шаг 5 - Использование REST API

Теперь, когда мы знаем, как использовать консоль администратора для выполнения различных задач, давайте посмотрим, как выполнять те же задачи с помощью REST API BaasBox.

API REST может использоваться различными типами приложений, от веб-приложений и мобильных приложений до консольных приложений. Мы будем использовать + 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.

Вторым выделенным значением является + X-BB-SESSION +, которое является идентификатором сеанса, который должен присутствовать во всех будущих запросах, которые будет выполнять + user2 +. Мы будем называть это значение ++ в последующих разделах.

Вход пользователя в систему с помощью REST API

Теперь, когда у нас есть идентификатор сеанса для + user2 +, давайте получим идентификатор для + user1 +, пользователя, которого мы создали ранее в консоли администратора. Мы сделаем это, войдя в систему как + user1 +, используя REST API. Общий формат команды + 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 +. Мы будем называть это значение ++ с этого момента.

Создание документа с использованием REST API

Давайте создадим два документа в нашем приложении. Мы назначим один документ + user1 +, пользователю, которого мы создали с помощью консоли администратора, и мы назначим другой документ + user2 +, пользователю, которого мы создали с помощью REST API. Структура документов, которые мы создадим, будет выглядеть следующим образом:

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

Глядя на структуру, мы видим, что документ будет иметь два свойства. Одним из них является имя списка задач, а другим - список задач в этом списке.

Общий формат команды + 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 +, который мы получили при регистрации этого пользователя в нашей системе.

Введите следующую команду, чтобы создать документ для + 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 +, который выделен в предыдущем примере, для всех новых документов. Запишите этот + id +, поскольку мы будем использовать его позже, предоставляя + user2 + доступ к этому списку. В последующих разделах мы будем ссылаться на идентификатор этого документа как «++».

Теперь, самостоятельно, используйте тот же метод, чтобы сделать следующее:

  • Создайте другой список для + user1 +

  • Создайте два списка для + user2 +

После выполнения этих шагов у вас будет 4 документа в коллекции + todos +. В последующих разделах мы будем ссылаться на идентификаторы этих документов как:

  • {} Пусто

  • {} Пусто

  • {} Пусто

  • {} Пусто

Теперь у нас есть некоторые данные, которые мы можем использовать, чтобы мы могли исследовать, как мы запрашиваем данные, используя REST API.

Получение одного документа с использованием API REST

Общий формат команды + curl, используемый для извлечения документа по его` + id`:

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 +:

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 +, но с + id + документа, созданного с помощью + user2 +, вы сможете получить этот документ просто отлично.

Получение всех документов с использованием API REST

Общий формат команды + 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 +`, вы увидите другой набор документов.

Обновление документа с использованием REST API

Общий формат команды + curl +, используемой для обновления документа:

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

При обновлении документа необходимо помнить две вещи:

  • Только владелец документа может изменять документ

  • Обновление * не объединяет старый и новый документы *. Он * заменяет * старый документ новым. Это означает, что если команда обновления содержит документы с некоторыми полями, отсутствующими в исходной версии, эти поля будут потеряны.

Давайте использовать эту команду для обновления документа с идентификатором ++ следующим содержанием:

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 + на документ могут удалить этот документ.

Давайте используем эту команду для удаления документа с идентификатором ++ следующим образом:

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

Выполнение этой команды дает следующий вывод:

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

Это указывает на то, что документ был успешно удален. Любая будущая попытка получить доступ к этому документу с помощью + id + теперь потерпит неудачу.

Предоставление доступа другому пользователю с помощью REST API

Мы видели, как по умолчанию BaasBox предотвращает доступ пользователей к документам, не созданным ими. Однако иногда требуется предоставить нескольким пользователям доступ к документу. Давайте предоставим + user2 + доступ к документу с идентификатором ++.

Общий формат команды + curl +, используемый для предоставления доступа к документу:

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

Эта команда будет работать, только если она выполнена пользователем, имеющим полный доступ к этому документу. Заполнитель ++ может иметь одно из следующих 4 значений:

  • read

  • Обновить

  • удалять

  • all

Чтобы предоставить + user2 + доступ на чтение документа с идентификатором ++, выполните следующую команду, используя идентификатор сеанса + user1 +:

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

Выполнение этой команды дает следующий вывод:

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

Это указывает на то, что + user2 + теперь имеет доступ к документу ++. Если вы попытаетесь получить доступ к этому документу как + user2 +, теперь вы увидите детали документа вместо ответа об ошибке

Шаг 6 - Использование Supervisor для поддержания работы приложения

Когда у вас есть долго работающее приложение, всегда есть риск, что оно может перестать работать. Это может произойти по разным причинам, таким как ошибка приложения, перезагрузка системы и т. Д. Рекомендуется настроить приложение на перезапуск в случае неожиданного завершения работы. Это сводит к минимуму административные затраты на обслуживание приложения.

Для этого приложения мы будем использовать Supervisor, что позволяет легко управлять долго работающими приложениями. Если вы не знакомы с Supervisor, вы можете прочитать больше о https://www.digitalocean.com/community/tutorials/how-to-install-and-manage-supervisor-on-ubuntu-and-debian-vps[how установить и управлять Supervisor в Ubuntu здесь.

Сначала установите Supervisor:

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

Теперь нам нужно уведомить Supervisor об этих изменениях и заставить его использовать эти изменения. Выполните следующую команду:

supervisorctl reread

Затем выполните эту команду:

supervisorctl update

Теперь, когда приложение по какой-либо причине закрывается, Supervisor гарантирует, что оно перезапускается, не требуя ручного вмешательства.

Заключение

В этой статье мы увидели, как использовать BaasBox для управления контентом, пользователями и разрешениями, используя консоль администратора и API REST. BaasBox предлагает намного больше, чем темы, описанные в этой статье. Вы можете изучить консоль администратора BaasBox, чтобы ознакомиться с разделами, которые позволяют управлять файлами, создавать и восстанавливать резервные копии базы данных и настраивать доступность конечных точек API. Что еще более важно, теперь вы готовы начать использовать BaasBox в своем следующем приложении.

Related