如何在 Ubuntu 14.04 上安装和使用 BaasBox

介绍

BaasBox 是一个作为数据库服务器和应用程序服务器组合的应用程序。在外部,BaasBox 提供用户登录、用户管理、角色管理、内容管理、文件管理和数据库管理备份。由于所有这些功能都通过标准的 HTTP REST API 曝光,Web 和移动应用程序的开发者可以使用 BaasBox 作为数据存储的后端。

本文将指导您安装 BaasBox、创建用户、使用管理控制台,并在创建简单的应用程序后端时探索 REST API。

前提条件

  • 您有一个 Droplet 运行 Ubuntu 14.04
  • 您已登录到您的服务器作为具有管理权限的非根用户。 请参阅教程 Ubuntu 14.04 初始服务器安装指南 来设置此设置。
  • 您已安装了来自 Oracle 的官方 Java 8 JRE。

步骤 1 – 安装和运行 BaasBox

要安装 BaasBox,我们从官方网站下载了最新稳定版本的 BaasBox. 您可以使用wget命令这样做:

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

我们将使用unzip命令从下载的 zip 文件中提取 BaasBox. 如果您没有unzip,请使用以下命令安装它:

1sudo apt-get install unzip

现在提取Zip文件的内容:

1unzip baasbox-stable.zip

此命令将 zip 文件的内容提取到名为baasbox-X.Y.Z的目录中,其中X.Y.Z将是最新版本,例如0.9.5

1cd baasbox-X.Y.Z

该目录包含一个名为start的文件,需要执行才能启动 BaasBox. 为了做到这一点,我们首先需要使用以下命令使其成为可执行的文件:

1chmod +x ./start

然后,开始 BaasBox,执行以下命令:

1./start

你会看到一些输出,其结尾应该看起来像:

1[secondary_label Output]
22016-06-28 14:32:14,554 - [info] - BaasBox is Ready.
32016-06-28 14:32:14,558 - [info] - Application started (Prod)
42016-06-28 14:32:14,733 - [info] - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
52016-06-28 14:32:15,261 - [info] - Session Cleaner: started
62016-06-28 14:32:15,263 - [info] - Session cleaner: tokens: 0 - removed: 0
72016-06-28 14:32:15,263 - [info] - Session cleaner: finished

上面的输出中突出的一部分表明,BaasBox现在正在运行,并且可以在机器上的9000端口访问。默认的BaasBox配置在所有网络接口上倾听此端口。

  • http://localhost:9000 and http://127.0.0.1:9000 from the server it is installed on (or via an SSH tunnel)
  • http://your_internal_server_ip:9000 from the internal network that your server is on (if it is on an internal network)
  • http://your_ip_address:9000 from the internet if your_ip_address is a publicly accessible IP address.

<$>[注] 您可以在特定网络接口和不同的端口上使用 BaasBox 聆听,如果需要,请使用以下命令:

1./start -Dhttp.port=target_port -Dhttp.address=target_interface

美元

在您的浏览器中访问http://your_ip_address:9000/console以访问 BaasBox 管理控制台,您将看到一个看起来像以下图像的界面:

BaasBox Admin Console

随着 BaasBox 运行,让我们设置一个应用程序和一些用户。

步骤 2:使用 BaasBox 创建应用程序

在本文中,我们将创建一个简单的 Todo 列表管理器 ,该列表应该:

  • 允许用户登录
  • 允许用户登录
  • 允许用户创建多个Todo列表
  • 允许用户获取自己的Todo列表
  • 允许用户修改他们的Todo列表
  • 允许用户删除他们的Todo列表
  • 允许用户与其他用户共享他们的Todo列表

在跟进时,请注意以下几点:

  • 我们将创建两个用户名user1user2
  • 这些用户的密码将被称为user1_passworduser2_password
  • 这些用户的会话 ID将被称为user1_session_iduser2_session_id

虽然您可以通过 REST API 管理 BaasBox,但有时更方便地使用管理控制台,正如您在步骤 2 中所看到的那样,它位于 http://your_ip_address:9000/console。 请在浏览器中访问该链接。 因为这是您第一次使用它,请使用默认凭据登录:

*默认用户名: admin *默认密码: admin *默认应用程序代码: 1234567890

BaasBox Admin Console Login

登录后,您将看到 BaasBox 仪表板:

BaasBox Dashboard

让我们使用 admin 控制台为我们的应用程序创建用户。

步骤三:创建用户

用户管理是 BaasBox 最有用的功能之一. BaasBox 有一些内置的用户是私有的,无法编辑的. 这包括您在登录管理控制台时使用的admin用户。

BaasBox 还允许您定义角色,并将其分配给用户,以实现细粒访问控制. 默认情况下,BaasBox 有以下3个角色:

  • administrator - 这个角色具有完整、无限制的访问
  • backoffice - 这个角色授予注册用户创建的内容
  • 注册 - 这是默认的角色对新注册用户

您可以将自己的角色添加到这些预配置的角色中,当创建新的角色时,它具有与上面提到的注册角色相同的权限。

您可以在 BaasBox 中通过管理控制台或通过 REST API 创建用户. 通常,您将使用 REST API 来编程创建用户,例如通过应用程序的用户登录过程。

当您通过管理控制台添加用户时,您可以为他们设置自定义角色,但是,当您使用内置的 REST API 登录时,新创建的用户将被分配为注册角色。

要从 BaasBox 管理控制台创建新用户,请在管理控制台中打开 **用户 > 用户 ** 菜单,然后点击 ** 新用户 ** 按钮。

BaasBox Admin Console - New User

这将打开一个表单,您可以填写您正在创建的用户的详细信息:

BaasBox Admin Console - New User

需要 用户名 、 ** 密码** 、 ** 重定义密码** 和 ** 角色** 字段,而其他每个字段都是可选的。

您可以选择任何角色,但最常用的角色是注册。一旦您输入了所有细节,请点击保存更改按钮来完成用户创建过程。

我们将在下一节中使用REST API创建用户,现在让我们为我们的应用程序内容配置一个位置。

步骤4:创建收藏

BaasBox将您的内容组织成类似于 NoSQL 数据库(如 MongoDB)提供的集合的集合。集合包含相同类型的文档。熟悉 SQL 数据库的用户可以认为一个集合大致类似于一个

集合只能由管理员创建. 虽然创建集合的最常见方式是从管理控制台,但也可以使用 REST API 创建集合。

所有内容管理功能均可在数据部分的收藏文档菜单中使用。

打开 **DATA > 收藏 ** 菜单. 您将看到一页列出了应用程序中的所有当前收藏。

BaasBox Admin Console - Collections

若要创建一个新集合,请单击 **新集合 ** 按钮. 此表格提示您选择集合名称。

BaasBox Admin Console - New Collection

输入todos作为收藏的名称,然后点击保存更改以完成收藏创建过程。应用程序的用户现在可以使用REST API访问该收藏及其收藏中的文档。

步骤 5 – 使用 REST API

现在我们知道如何使用管理控制台来执行各种任务,让我们看看如何使用 BaasBox 的 REST API 执行相同的任务。

REST API 可以被各种类型的应用程序从 Web 和移动应用程序到主机应用程序所消耗,我们将使用‘curl’来模拟下面的示例中的请求。

使用 REST API 创建用户

用于创建用户的curl命令的一般格式如下:

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

在我们的情况下,我们将创建一个用户名user2。选择您喜欢的任何密码,我们将使用X-BAASBOX-APPCODE标题的默认值,即1234567890

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

执行此命令的输出应该类似于:

1[secondary_label Output]
2{"result":"ok","data":{"user":{"name":"user2","status":"ACTIVE","roles":[{"name":"registered","isrole":true}]},"id":"a4353548-501a-4c55-8acd-989590b2393c","visibleByAnonymousUsers":{},"visibleByTheUser":{},"visibleByFriends":{},"visibleByRegisteredUsers":{"_social":{}},"signUpDate":"2016-04-05T13:12:17.452-0400","generated_username":false,"X-BB-SESSION":"992330a3-4e2c-450c-8d83-8eaf2903188b"},"http_code":201}

以下是上述输出的格式化版本:

 1[secondary_label Output]
 2{
 3  "result": "ok",
 4  "data": {
 5    "user": {
 6      "name": "user2",
 7      "status": "ACTIVE",
 8      "roles": [
 9        {
10          "name": "registered",
11          "isrole": true
12        }
13      ]
14    },
15    "id": "a4353548-501a-4c55-8acd-989590b2393c",
16    "visibleByAnonymousUsers": {},
17    "visibleByTheUser": {},
18    "visibleByFriends": {},
19    "visibleByRegisteredUsers": {
20      "_social": {}
21    },
22    "signUpDate": "2016-04-05T13:12:17.452-0400",
23    "generated_username": false,
24    "X-BB-SESSION": "992330a3-4e2c-450c-8d83-8eaf2903188b"
25  },
26  "http_code": 201
27}

请注意在上面的输出中突出的值。BaasBox为每个用户生成一个独特的id。您将使用此ID在通过REST API获取、修改或删除该特定用户的文档时。

第二个突出值是X-BB-SESSION,它是user2将提出的所有未来的查询中必须存在的会话ID。

使用 REST API 登录用户

现在我们有user2的会话ID,让我们为user1获取一个,我们在管理控制台上创建的用户。我们将通过使用REST API登录为user1

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

在我们的情况下,用户名是user1,密码是创建user1时使用的任何东西,而BaasBox应用程序代码是1234567890

1curl http://your_ip_address:9000/login \
2    -d "username=user1" \
3    -d "password=user1_password" \
4    -d "appcode=1234567890"

执行此命令的输出应该类似于:

1[secondary_label Output]
2{"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}

以下是上述输出的格式化版本:

 1[secondary_label Output]
 2{
 3  "result": "ok",
 4  "data": {
 5    "user": {
 6      "name": "user1",
 7      "status": "ACTIVE",
 8      "roles": [
 9        {
10          "name": "registered",
11          "isrole": true
12        }
13      ]
14    },
15    "id": "84191e4c-2471-48a7-98bb-ecdaf118285c",
16    "visibleByAnonymousUsers": {},
17    "visibleByTheUser": {},
18    "visibleByFriends": {},
19    "visibleByRegisteredUsers": {}
20    },
21    "signUpDate": "2016-04-05T13:06:35.750-0400",
22    "generated_username": false,
23    "X-BB-SESSION": "74400b4b-d16c-45a2-ada3-1cd51cc202bb"
24  },
25  "http_code": 200
26}

上面的答案中的突出部分显示了user1的会话ID,我们需要在user1将提出的所有未来查询中使用。

使用 REST API 创建文档

让我们在我们的应用程序中创建两个文档,我们将一个文档分配给user1,我们使用管理控制台创建的用户,我们将另一个文档分配给user2,我们通过REST API创建的用户。

 1[secondary_label Sample Document Contents]
 2{
 3  "list_name": "Task List Name",
 4  "tasks": [
 5    {
 6      "task": "Task Details",
 7      "done": false
 8    },
 9    {
10      "task": "Task Details",
11      "done": false
12    }
13  ]
14}

看看结构,我们可以看到一个文档将有两个属性. 一个是任务列表的名称,另一个是该列表中的任务列表。

用于创建新文档的curl命令的一般格式是:

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

让我们先创建一个用于用户1的文档,在我们的例子中,收藏的名称是todos,我们要插入的文档看起来像:

 1[secondary_label Document Contents]
 2{
 3  "list_name": "User 1 - List 1",
 4  "tasks": [
 5    {
 6      "task": "User1 List1 task 1",
 7      "done": false
 8    },
 9    {
10      "task": "User1 List1 task 2",
11      "done": false
12    }
13  ]
14}

为了确保文档与用户1相关联,我们使用用户1的会话 ID,我们在登录该用户到我们的系统时获得了该 ID。

输入以下命令来创建user1的文档:

1curl -X POST http://your_ip_address:9000/document/todos \
2     -d '{"list_name":"User 1 - List 1","tasks":[{"task":"User1 List1 task 1","done":false},{"task":"User1 List1 task 2","done":false}]}' \
3     -H Content-type:application/json \
4     -H X-BB-SESSION:user1_session_id

执行此命令会产生类似于以下的输出:

1[secondary_label Output]
2{"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}

以下是上述输出的格式化版本:

 1[secondary_label Output]
 2{
 3  "result": "ok",
 4  "data": {
 5    "@rid": "#24:1",
 6    "@version": 2,
 7    "@class": "todos",
 8    "list_name": "User 1 - List 1",
 9    "tasks": [
10      {
11        "task": "User1 List1 task 1",
12        "done": false
13      },
14      {
15        "task": "User1 List1 task 2",
16        "done": false
17      }
18    ],
19    "id": "c83309e7-cbbd-49c8-a76b-9e8fadc72d6f",
20    "_creation_date": "2016-04-05T20:34:30.132-0400",
21    "_author": "user1"
22  },
23  "http_code": 200
24}

就像新用户一样,BaasBox为所有新文档创建了一个id,这在上一个例子中是突出显示的。请记住这个id,因为我们将在以后使用它,同时给user2访问这个列表。

现在,自行使用相同的方法来执行以下操作:

  • 创建另一个名单为 user1
  • 创建两个名单为 user2

完成这些步骤后,您将在todos集合中共拥有 4 个文档,在随后的部分中,我们将将这些文档的 ID 参考为:

用户1_名单1_名单1_名单1_名单2_名单1_名单1_名单1_名单1_名单1_名单1_名单2_名单2_名单2_名单1_名单2_名单2_名单1_名单2_名单2_名单2_名单1_名单2_名单2_名单2_名单2_名单2_名单2_名单1_名单2_名单2_名单2_名单1_名单2_名单2_名单2_名单2_名单2_名单2_名单1_名单

现在我们有一些数据,我们可以使用,以便我们可以调查如何使用REST API查询数据。

使用 REST API 检索单个文档

curl命令用来通过其id提取文档的一般格式是:

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

如果我们想获取由user1创建的第一个文档(包含user1的身份证件),则该命令应该是:

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

执行这个命令会给我们一个类似于以下的输出:

1[secondary_label Output]
2{"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}

以下是答案的格式化版本:

 1[secondary_label Output]
 2{
 3  "result": "ok",
 4  "data": {
 5    "@rid": "#24:1",
 6    "@version": 2,
 7    "@class": "todos",
 8    "list_name": "User 1 - List 1",
 9    "tasks": [
10      {
11        "task": "User1 List1 task 1",
12        "done": false
13      },
14      {
15        "task": "User1 List1 task 2",
16        "done": false
17      }
18    ],
19    "id": "c83309e7-cbbd-49c8-a76b-9e8fadc72d6f",
20    "_creation_date": "2016-04-05T20:34:30.132-0400",
21    "_author": "user1"
22  },
23  "http_code": 200
24}

现在你已经知道如何获取单个文档了,请尝试再次执行相同的操作,除非这次使用user2的会话标识来获取该文档:

1curl -X POST http://your_ip_address:9000/document/todos/user1_list1_id \
2     -H X-BB-SESSION:user2_session_id

执行此命令会显示类似于以下的输出:

1[secondary_label Output]
2{"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}

以下是相同的输出,格式化为可读性:

 1[secondary_label Output]
 2{
 3  "result": "error",
 4  "message": "c83309e7-cbbd-49c8-a76b-9e8fadc72d6f not found",
 5  "resource": "\/document\/todos\/c83309e7-cbbd-49c8-a76b-9e8fadc72d6f",
 6  "method": "GET",
 7  "request_header": {
 8    "Accept": [
 9      "*\/*"
10    ],
11    "Host": [
12      "localhost:9000"
13    ],
14    "User-Agent": [
15      "curl\/7.35.0"
16    ],
17    "X-BB-SESSION": [
18      "8f5a2e48-0f42-4478-bd1b-d28699158c4b"
19    ]
20  },
21  "API_version": "0.9.5",
22  "http_code": 404
23}

正如您所看到的,由于user2没有创建此文档,并且无法访问该文档,因此检索操作失败了. 如果您尝试执行命令为user2,但使用由user2创建的文档的id,您将能够检索该文档。

使用 REST API 获取所有文档

用于从集合中提取所有可访问的文档的弯曲命令的通用格式是:

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

请记住,此命令只会返回用户可以访问的文档,例如,让我们尝试将此命令执行为user1:

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

执行这个命令会给我们一个类似于以下的输出:

1[secondary_label Output]
2{"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}

以下是该输出的格式化版本:

 1[secondary_label Output]
 2{
 3  "result": "ok",
 4  "data": [
 5    {
 6      "@rid": "#24:1",
 7      "@version": 2,
 8      "@class": "todos",
 9      "list_name": "User 1 - List 1",
10      "tasks": [
11        {
12          "task": "User1 List1 task 1",
13          "done": false
14        },
15        {
16          "task": "User1 List1 task 2",
17          "done": false
18        }
19      ],
20      "id": "c83309e7-cbbd-49c8-a76b-9e8fadc72d6f",
21      "_creation_date": "2016-04-05T20:34:30.132-0400",
22      "_author": "user1"
23    },
24    {
25      "@rid": "#24:2",
26      "@version": 1,
27      "@class": "todos",
28      "list_name": "User 1 - List 2",
29      "tasks": [
30        {
31          "task": "User1 List2 task 1",
32          "done": false
33        },
34        {
35          "task": "User1 List2 task 2",
36          "done": false
37        }
38      ],
39      "id": "7c99c877-d269-4281-8a22-ef72175085f4",
40      "_creation_date": "2016-04-05T20:46:14.338-0400",
41      "_author": "user1"
42    }
43  ],
44  "http_code": 200
45}

正如您从输出中可以看到的那样,只有user1可以访问的文档才会被返回. 如果您使用属于user2的会话ID执行相同的查询,则会看到不同的文件集。

使用 REST API 更新文档

用于更新文档的curl命令的一般格式是:

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

在尝试更新文档时需要记住两件事:

  • 只有文档所有者可以更改document
  • 更新 不会合并旧文档和新文档 . 它 ** 将旧文档替换为新文档. 这意味着如果更新命令包含一些从原始版本中缺少某些字段的文档,这些字段将丢失。

让我们使用这个命令来更新文档的 id user1_list1_id 用下列内容:

 1[secondary_label New Document Contents]
 2{
 3  "list_name": "User 1 - List 1 Updated",
 4  "tasks": [
 5    {
 6      "task": "New User1 List1 task 1",
 7      "done": false
 8    }
 9  ]
10}

执行此更新的命令是:

1curl -X PUT http://your_ip_address:9000/document/todos/user1_list1_id \
2     -d '{"list_name":"User 1 - List 1 Updated","tasks":[{"task":"New User1 List1 task 1","done":false}]}' \
3     -H Content-type:application/json \
4     -H X-BB-SESSION:user1_session_id

执行这个命令会给我们一个类似于以下的输出:

1[secondary_label Output]
2{"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}

这是同样的输出,格式化:

 1[secondary_label Output]
 2{
 3  "result": "ok",
 4  "data": {
 5    "@rid": "#24:1",
 6    "@version": 4,
 7    "@class": "todos",
 8    "list_name": "User 1 - List 1 Updated",
 9    "tasks": [
10      {
11        "task": "New User1 List1 task 1",
12        "done": false
13      }
14    ],
15    "id": "c83309e7-cbbd-49c8-a76b-9e8fadc72d6f",
16    "_creation_date": "2016-04-05T20:34:30.132-0400",
17    "_author": "user1"
18  },
19  "http_code": 200
20}

正如您所看到的,该文件已与新信息更新。

使用 REST API 删除文档

用于删除文档的curl命令的一般格式是:

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

只有具有文档删除权限的文档所有者和用户才能删除该文档。

使用此命令删除user1_list1_id的文档如下:

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

执行此命令会产生以下输出:

1[secondary_label Output]
2{"result":"ok","data":"","http_code":200}

这表明该文档已成功删除,任何未来的尝试通过id访问该文档将失败。

使用 REST API 向其他用户授予访问权限

我们已经看到,默认情况下,BaasBox阻止用户访问他们未创建的文档,然而,有时有要求允许多个用户访问一个文档。

用于授予文档访问的curl命令的一般格式是:

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

此命令只有在具有完整访问此文档的用户执行时才会起作用。

  • read *更新 *删除 *所有

若要授予user2读取user1_list1_id的文档访问权限,请使用user1的会话ID执行下面的命令:

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

执行此命令会产生以下输出:

1[secondary_label Output]
2{"result":"ok","data":"","http_code":200}

这表明user2现在可以访问文档user1_list1_id。如果您尝试以user2的方式访问该文档,您现在将看到文档细节,而不是错误响应。

步骤 6 – 使用 Supervisor 保持应用程序运行

每次你有一个长期运行的应用程序,总是有可能停止运行的风险. 这可能是由于各种原因,如应用程序错误,系统重新启动等。

对于这个应用程序,我们将使用 Supervisor,这使得管理长期运行的应用程序很容易。如果你不熟悉Supervisor,你可以阅读更多关于 如何在Ubuntu上安装和管理Supervisor在这里

首先,安装监控器:

1sudo apt-get install supervisor

要让 Supervisor 管理我们的应用程序,我们需要创建一个配置文件. 我们将这个文件命名为 baasbox.conf,并将其放入 /etc/supervisor/conf.d 目录。

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

将下列内容输入到文件中,相应地更换突出部分。

1[label /etc/supervisor/conf.d/baasbox.conf]
2[program:Baasbox]
3directory = /home/sammy/baasbox-0.9.5
4command = /home/sammy/baasbox-0.9.5/start
5autostart = true
6autorestart = true
7startsecs = 5
8user = sammy
9stdout_logfile = /var/log/supervisor/baasbox.log

现在我们需要通知管理员这些更改,并让它使用这些更改。

1supervisorctl reread

然后运行这个命令:

1supervisorctl update

现在,当您的应用程序因任何原因关闭时,Supervisor 将确保它重新启动而不需要任何手动干预。

结论

在本文中,我们看到如何使用 BaasBox 来管理内容、用户和权限,使用管理控制台和使用 REST API. 除了本文中涵盖的主题外,BaasBox 还提供了更多内容。 您可以进一步探索 BaasBox 管理控制台,以便熟悉允许您管理文件、备份和恢复数据库,并配置 API 终端点的可用性。

Published At
Categories with 技术
comments powered by Disqus