介绍
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
andhttp://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 ifyour_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 运行,让我们设置一个应用程序和一些用户。
步骤 2:使用 BaasBox 创建应用程序
在本文中,我们将创建一个简单的 Todo 列表管理器 ,该列表应该:
- 允许用户登录
- 允许用户登录
- 允许用户创建多个Todo列表
- 允许用户获取自己的Todo列表
- 允许用户修改他们的Todo列表
- 允许用户删除他们的Todo列表
- 允许用户与其他用户共享他们的Todo列表
在跟进时,请注意以下几点:
- 我们将创建两个用户名
user1
和user2
- 这些用户的密码将被称为
user1_password
和user2_password
- 这些用户的会话 ID将被称为
user1_session_id
和user2_session_id
。
虽然您可以通过 REST API 管理 BaasBox,但有时更方便地使用管理控制台,正如您在步骤 2 中所看到的那样,它位于 http://your_ip_address:9000/console
。 请在浏览器中访问该链接。 因为这是您第一次使用它,请使用默认凭据登录:
*默认用户名: admin
*默认密码: admin
*默认应用程序代码: 1234567890
登录后,您将看到 BaasBox 仪表板:
让我们使用 admin 控制台为我们的应用程序创建用户。
步骤三:创建用户
用户管理是 BaasBox 最有用的功能之一. BaasBox 有一些内置的用户是私有的,无法编辑的. 这包括您在登录管理控制台时使用的admin
用户。
BaasBox 还允许您定义角色,并将其分配给用户,以实现细粒访问控制. 默认情况下,BaasBox 有以下3个角色:
administrator
- 这个角色具有完整、无限制的访问backoffice
- 这个角色授予注册用户创建的内容注册
- 这是默认的角色对新注册用户
您可以将自己的角色添加到这些预配置的角色中,当创建新的角色时,它具有与上面提到的注册
角色相同的权限。
您可以在 BaasBox 中通过管理控制台或通过 REST API 创建用户. 通常,您将使用 REST API 来编程创建用户,例如通过应用程序的用户登录过程。
当您通过管理控制台添加用户时,您可以为他们设置自定义角色,但是,当您使用内置的 REST API 登录时,新创建的用户将被分配为注册
角色。
要从 BaasBox 管理控制台创建新用户,请在管理控制台中打开 **用户 > 用户 ** 菜单,然后点击 ** 新用户 ** 按钮。
这将打开一个表单,您可以填写您正在创建的用户的详细信息:
需要 用户名 、 ** 密码** 、 ** 重定义密码** 和 ** 角色** 字段,而其他每个字段都是可选的。
您可以选择任何角色,但最常用的角色是注册
。一旦您输入了所有细节,请点击保存更改
按钮来完成用户创建过程。
我们将在下一节中使用REST API创建用户,现在让我们为我们的应用程序内容配置一个位置。
步骤4:创建收藏
BaasBox将您的内容组织成类似于 NoSQL 数据库(如 MongoDB)提供的集合的集合
。集合包含相同类型的文档
。熟悉 SQL 数据库的用户可以认为一个集合
大致类似于一个表
。
集合只能由管理员创建. 虽然创建集合的最常见方式是从管理控制台,但也可以使用 REST API 创建集合。
所有内容管理功能均可在数据
部分的收藏
和文档
菜单中使用。
打开 **DATA > 收藏 ** 菜单. 您将看到一页列出了应用程序中的所有当前收藏。
若要创建一个新集合,请单击 **新集合 ** 按钮. 此表格提示您选择集合名称。
输入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 终端点的可用性。