Thứ tư, 13/07/2016 | 00:00 GMT+7

Cách cài đặt và sử dụng BaasBox trên Ubuntu 14.04

BaasBox là một ứng dụng hoạt động như một server database và server ứng dụng kết hợp. Ngoài ra, BaasBox cung cấp tính năng đăng ký user , quản lý user , quản lý role , quản lý nội dung, quản lý file và quản lý database với các bản backup . Vì tất cả chức năng này được hiển thị thông qua API REST HTTP tiêu chuẩn, các nhà phát triển ứng dụng web và thiết bị di động có thể sử dụng BaasBox làm back-end để lưu trữ dữ liệu. Các nhà phát triển cũng có thể tạo các dịch vụ vi mô dựa trên BaasBox được sử dụng bởi các phần khác trong ứng dụng của họ.

Bài viết này sẽ hướng dẫn bạn cách cài đặt BaasBox, tạo user , làm việc với console quản trị và khám phá API REST khi bạn tạo một chương trình backend ứng dụng đơn giản.

Yêu cầu

  • Bạn có một Server chạy Ubuntu 14.04
  • Bạn đã đăng nhập vào server của bạn với quyền là user không phải root với các quyền quản trị. Xem hướng dẫn Hướng dẫn cài đặt server ban đầu cho Ubuntu 14.04 để cài đặt điều này.
  • Bạn đã cài đặt Java 8 JRE chính thức từ Oracle. Hướng dẫn này giải thích cách làm điều đó.

Bước 1 - Cài đặt và chạy BaasBox

Để cài đặt BaasBox, ta download version ổn định mới nhất của BaasBox từ trang web chính thức. Bạn có thể thực hiện việc này bằng lệnh wget như sau:

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

Ta sẽ sử dụng lệnh unzip để extract BaasBox từ file zip đã download . Trong trường hợp bạn không có unzip , hãy cài đặt nó bằng lệnh sau:

  • sudo apt-get install unzip

Bây giờ extract nội dung của file zip:

  • unzip baasbox-stable.zip

Lệnh này extract nội dung của file zip vào một folder có tên là baasbox- XYZ , trong đó XYZ sẽ là version mới nhất, chẳng hạn như 0.9.5 . Nhập folder mới tạo.

  • cd baasbox-X.Y.Z

Thư mục này chứa một file có tên start cần được thực thi để khởi động BaasBox. Để làm được điều đó, trước tiên ta cần đặt nó thành file thực thi bằng lệnh sau:

  • chmod +x ./start

Sau đó, để khởi động BaasBox, hãy thực hiện lệnh sau:

  • ./start

Bạn sẽ thấy một số kết quả , phần cuối của nó sẽ giống như sau:

Output
2016-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] - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 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

Phần được đánh dấu trong kết quả ở trên cho biết BaasBox hiện đang chạy và có thể được truy cập trên cổng 9000 trên máy. Cấu hình BaasBox mặc định lắng nghe trên cổng này trên tất cả các network interface . Nghĩa là BaasBox hiện có thể truy cập tại:

  • http://localhost:9000http://127.0.0.1:9000 từ server được cài đặt trên đó (hoặc qua tunnel SSH)
  • http:// your_internal_server_ip :9000 từ mạng nội bộ mà server của bạn đang bật (nếu nó nằm trong mạng nội bộ)
  • http:// your_ip_address :9000 từ internet nếu your_ip_address là địa chỉ IP có thể truy cập .

Bạn có thể yêu cầu BaasBox lắng nghe trên một network interface cụ thể và trên một cổng khác, nếu được yêu cầu. Để thực hiện việc này, hãy sử dụng lệnh sau:

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

Truy cập http:// your_ip_address :9000/console trong trình duyệt của bạn để truy cập console quản trị BaasBox và bạn sẽ thấy giao diện giống như hình sau:

 Control panel  dành cho  administrator  BaasBox

Khi BaasBox đang chạy, hãy cài đặt một ứng dụng và một số user .

Bước 2 - Tạo ứng dụng với BaasBox

Trong bài viết này, ta sẽ tạo một Trình quản lý danh sách Todo đơn giản sẽ:

  • Cho phép user đăng ký
  • Cho phép user đăng nhập
  • Cho phép user tạo nhiều danh sách việc cần làm
  • Cho phép user truy xuất danh sách việc cần làm của riêng họ
  • Cho phép user sửa đổi danh sách việc cần làm của họ
  • Cho phép user xóa danh sách việc cần làm của họ
  • Cho phép user chia sẻ danh sách việc cần làm của họ với user khác

Trong khi làm theo, vui lòng lưu ý những điều sau:

  • Ta sẽ tạo hai user với tên user là user1user2
  • Mật khẩu của những user này sẽ được gọi là user1_passworduser2_password
  • ID phiên của những user này sẽ được gọi là user1_session_iduser2_session_id .

Mặc dù bạn có thể quản lý BaasBox thông qua API REST, nhưng đôi khi sẽ thuận tiện hơn khi sử dụng console dành cho administrator , như bạn đã thấy ở Bước 2, tại http:// your_ip_address :9000/console . Truy cập liên kết đó trong trình duyệt của bạn. Vì đây là lần đầu tiên bạn sử dụng nó, hãy đăng nhập bằng thông tin đăng nhập mặc định:

  • Tên user mặc định: admin
  • Mật khẩu mặc định: admin
  • Mã ứng dụng mặc định: 1234567890

Đăng nhập console  dành cho  administrator  BaasBox

Sau khi đăng nhập, bạn sẽ thấy console BaasBox:

Trang tổng quan BaasBox

Hãy sử dụng console dành cho administrator để tạo user cho ứng dụng của ta .

Bước 3 - Tạo user

Quản lý user là một trong những tính năng hữu ích nhất của BaasBox. BaasBox có một số user cài sẵn là riêng tư và không thể chỉnh sửa. Điều này bao gồm user admin mà bạn sử dụng khi đăng nhập vào console dành cho administrator .

BaasBox cũng cho phép bạn xác định các role và gán chúng cho user để thực hiện kiểm soát truy cập chi tiết. Theo mặc định, BaasBox có 3 role sau:

  • administrator - role này có quyền truy cập hoàn chỉnh, không hạn chế
  • backoffice - role này cấp quyền truy cập vào nội dung do user đã đăng ký tạo
  • registered - đây là role mặc định đối với user mới đăng ký

Bạn có thể thêm các role của riêng mình ngoài những role được cấu hình sẵn này. Khi một role mới được tạo, nó có các quyền tương tự như role registered được đề cập ở trên.

Bạn có thể tạo user trong BaasBox thông qua console dành cho administrator hoặc thông qua REST API. Thông thường, bạn sẽ sử dụng REST API để tạo user theo chương trình, chẳng hạn như thông qua quy trình đăng ký user ứng dụng của bạn.

Khi thêm user thông qua console dành cho administrator , bạn có thể đặt role tùy chỉnh cho họ. Tuy nhiên, khi sử dụng API REST tích hợp để đăng ký, những user mới được tạo sẽ được gán role registered .

Để tạo user mới từ console dành cho administrator của BaasBox, hãy mở menu NGƯỜI DÙNG> User trong console dành cho administrator và nhấp vào nút User mới .

 Control panel  dành cho  administrator  BaasBox -  User  mới

Thao tác này sẽ mở ra một biểu mẫu nơi bạn có thể điền vào thông tin chi tiết của user mà bạn đang tạo:

 Control panel  dành cho  administrator  BaasBox -  User  mới

Các trường Tên user , Mật khẩu , Nhập lại Mật khẩu Role là bắt buộc trong khi mọi trường khác là tùy chọn. Lưu ý bạn có thể cuộn xuống trong biểu mẫu này để điền thêm thông tin chi tiết nếu bạn cần.

Đặt tên user cho user này thành user1 . Bạn có thể chọn bất kỳ role nào nhưng role thường được sử dụng nhất đã được registered . Khi bạn đã nhập tất cả các chi tiết, hãy nhấp vào nút Lưu thay đổi để hoàn tất quá trình tạo user .

Ta sẽ tạo user bằng API REST trong phần tiếp theo. Bây giờ, hãy cấu hình một nơi cho nội dung ứng dụng của ta .

Bước 4 - Tạo Bộ sưu tập

BaasBox sắp xếp nội dung của bạn thành các collections tương tự như các bộ sưu tập được cung cấp bởi database NoSQL như MongoDB. Bộ sưu tập lưu giữ các documents cùng loại. User quen thuộc với database SQL có thể coi một collection gần giống như một table . Tương tự, một document giống như một record .

Bộ sưu tập chỉ có thể được tạo bởi administrator . Mặc dù cách phổ biến nhất để tạo bộ sưu tập là từ console dành cho administrator , nhưng bạn cũng có thể thực hiện bằng cách sử dụng API REST. Trong phần này, ta sẽ xem xét cách tạo bộ sưu tập từ console dành cho administrator .

Tất cả chức năng quản lý nội dung đều có sẵn trong console dành cho administrator trong menu CollectionsDocuments trong phần DATA .

Mở menu DỮ LIỆU> Bộ sưu tập . Bạn sẽ thấy một trang liệt kê tất cả các bộ sưu tập hiện tại trong ứng dụng của bạn .

 Control panel  dành cho  administrator  BaasBox - Bộ sưu tập

Để tạo bộ sưu tập mới, hãy nhấp vào nút Bộ sưu tập mới . Điều này sẽ hiển thị một biểu mẫu nhắc bạn về tên bộ sưu tập.

 Control panel  dành cho  administrator  BaasBox - Bộ sưu tập mới

Nhập todos như tên của bộ sưu tập và nhấp vào Lưu thay đổi để hoàn tất quá trình tạo ra bộ sưu tập. User của ứng dụng hiện có thể truy cập bộ sưu tập này và các tài liệu của họ trong bộ sưu tập này bằng API REST. Hãy xem nó hoạt động như thế nào.

Bước 5 - Sử dụng API REST

Bây giờ ta đã biết cách sử dụng console quản trị để thực hiện các việc khác nhau, hãy cùng xem cách thực hiện các việc tương tự bằng cách sử dụng API REST của BaasBox.

API REST được dùng bởi nhiều loại ứng dụng khác nhau từ ứng dụng web và ứng dụng di động đến ứng dụng console , ta sẽ sử dụng curl để mô phỏng các yêu cầu trong các ví dụ sau. Bạn có thể điều chỉnh các ví dụ này theo nhu cầu của bạn tùy thuộc vào nền tảng front-end của bạn.

Tạo user bằng API REST

Định dạng chung của lệnh curl được sử dụng để tạo user như sau:

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

Trong trường hợp của ta , ta sẽ tạo một user với tên user user2 . Chọn bất kỳ password nào bạn thích. Ta sẽ sử dụng giá trị mặc định cho tiêu đề X-BAASBOX-APPCODE1234567890 . Sử dụng các giá trị này, lệnh của ta sẽ trở thành:

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

Đầu ra của việc thực thi lệnh này phải tương tự như:

Output
{"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}

Đây là version được định dạng của kết quả ở trên:

Output
{ "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 }

Lưu ý các giá trị được đánh dấu trong kết quả ở trên. BaasBox tạo một id duy nhất cho mọi user . Bạn sẽ sử dụng ID này khi muốn tìm nạp, sửa đổi hoặc xóa tài liệu của user cụ thể này qua API REST.

Giá trị được đánh dấu thứ hai là X-BB-SESSION , là ID phiên cần có trong tất cả các truy vấn trong tương lai mà user2 sẽ thực hiện. Ta sẽ gọi giá trị này là user2_session_id trong các phần tiếp theo.

Đăng nhập user bằng API REST

Bây giờ ta đã có id phiên cho user2 , hãy lấy một id cho user1 , user mà ta đã tạo trước đó trong console quản trị. Ta sẽ thực hiện việc này bằng cách đăng nhập với quyền user1 bằng API REST. Định dạng chung của lệnh curl được sử dụng để đăng nhập là:

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

Trong trường hợp của ta , tên user là user1 , password là bất cứ thứ gì được sử dụng trong khi tạo user1 và Mã ứng dụng BaasBox là 1234567890 . Sử dụng các giá trị này, lệnh của ta sẽ trở thành:

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

Đầu ra của việc thực thi lệnh này phải tương tự như:

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}

Đây là version được định dạng của kết quả ở trên:

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": "74400b4b-d16c-45a2-ada3-1cd51cc202bb" }, "http_code": 200 }

Phần được đánh dấu của phản hồi ở trên hiển thị ID phiên cho user1 mà ta cần sử dụng trong tất cả các truy vấn trong tương lai mà user1 sẽ thực hiện. Ta sẽ gọi giá trị này là user1_session_id kể từ bây giờ.

Tạo tài liệu bằng API REST

Hãy tạo hai tài liệu trong ứng dụng của ta . Ta sẽ chỉ định một tài liệu cho user1 , user mà ta đã tạo bằng console dành cho administrator và ta sẽ chỉ định tài liệu khác cho user2 , user mà ta đã tạo thông qua REST API. Cấu trúc của các tài liệu ta sẽ tạo sẽ giống như ví dụ sau:

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

Nhìn vào cấu trúc, ta có thể thấy rằng một tài liệu sẽ có hai thuộc tính. Một là tên của danh sách nhiệm vụ và một là danh sách các nhiệm vụ trong danh sách đó.

Định dạng chung của lệnh curl được sử dụng để tạo tài liệu mới là:

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

Hãy bắt đầu bằng cách tạo một tài liệu cho user1 . Trong trường hợp của ta , tên của bộ sưu tập là todos và tài liệu ta muốn chèn trông giống như sau:

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

Để đảm bảo tài liệu được liên kết với user1 , ta sử dụng ID phiên của user1 mà ta có được khi đăng nhập user đó vào hệ thống của ta .

Nhập lệnh sau để tạo tài liệu cho user1 :

  • curl -X POST http://your_ip_address: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:user1_session_id

Việc thực thi lệnh này dẫn đến kết quả tương tự như sau:

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}

Đây là version được định dạng của kết quả ở trên:

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 }

Giống như nó đã làm cho user mới, BaasBox tạo một id , được đánh dấu trong ví dụ trước, cho tất cả các tài liệu mới. Hãy ghi lại id này vì ta sẽ sử dụng nó sau này khi cấp cho user2 quyền truy cập vào danh sách này. Trong các phần tiếp theo, ta sẽ đề cập đến id của tài liệu này là user1_list1_id .

Bây giờ, của bạn , sử dụng cùng một phương pháp để làm như sau:

  • Tạo một danh sách khác cho user1
  • Tạo hai danh sách cho user2

Sau khi hoàn thành các bước này, bạn sẽ có tổng cộng 4 tài liệu trong todos bộ sưu tập. Trong các phần tiếp theo, ta sẽ đề cập đến ID của các tài liệu này là:

  • id user1 list1
  • id user1 list2
  • id user2 list1
  • id user2 list2

Bây giờ ta có một số dữ liệu có thể sử dụng để có thể điều tra cách ta truy vấn dữ liệu bằng API REST.

Lấy một tài liệu duy nhất bằng API REST

Định dạng chung của lệnh curl được sử dụng để tìm nạp tài liệu theo id của nó là:

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

Nếu ta muốn tìm nạp tài liệu đầu tiên được tạo bởi user1 (với thông tin đăng nhập của user1 ), lệnh phải là:

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

Thực hiện lệnh này cho ta một kết quả tương tự như sau:

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}

Đây là version được định dạng của phản hồi:

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 }

Đến đây bạn đã biết cách truy xuất một tài liệu, hãy thử làm lại điều tương tự, ngoại trừ lần này tìm nạp tài liệu bằng id phiên của user2 :

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

Thực hiện lệnh này sẽ hiển thị một kết quả tương tự như sau:

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}

Đây là cùng một kết quả , được định dạng để dễ đọc:

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 }

Như bạn thấy , vì user2 không tạo tài liệu này và không có quyền truy cập vào tài liệu này nên thao tác tìm nạp không thành công. Nếu bạn cố gắng thực thi lệnh với quyền user2 nhưng với id của tài liệu do user2 tạo, bạn có thể tìm nạp tài liệu đó tốt.

Truy xuất tất cả tài liệu bằng API REST

Định dạng chung của lệnh curl được sử dụng để tìm nạp tất cả các tài liệu có thể truy cập từ một bộ sưu tập là:

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

Lưu ý lệnh này sẽ chỉ trả về các tài liệu mà user có quyền truy cập. Ví dụ: hãy thử thực hiện lệnh này với quyền là user1 :

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

Thực hiện lệnh này cho ta một kết quả tương tự như sau:

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}

Đây là version được định dạng của kết quả đó:

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 }

Như bạn thấy từ kết quả , chỉ những tài liệu mà user1 có quyền truy cập được trả về. Nếu bạn thực hiện cùng một truy vấn bằng cách sử dụng id phiên thuộc về user2 , bạn sẽ thấy một bộ tài liệu khác.

Cập nhật tài liệu bằng API REST

Định dạng chung của lệnh curl được sử dụng để cập nhật tài liệu là:

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

Có hai điều cần ghi nhớ khi cố gắng cập nhật tài liệu:

  • Chỉ chủ sở hữu tài liệu mới có thể sửa đổi tài liệu
  • Bản cập nhật không hợp nhất tài liệu cũ và tài liệu mới . Nó thay thế tài liệu cũ bằng tài liệu mới. Điều này nghĩa là nếu lệnh cập nhật bao gồm tài liệu có một số trường bị thiếu so với version root , các trường này sẽ bị mất.

Hãy sử dụng lệnh này để cập nhật tài liệu có id user1_list1_id với nội dung sau:

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

Lệnh để thực hiện cập nhật này là:

  • curl -X PUT http://your_ip_address:9000/document/todos/user1_list1_id \
  • -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:user1_session_id

Thực hiện lệnh này cho ta một kết quả tương tự như sau:

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}

Đây là cùng một kết quả , được định dạng:

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 }

Như bạn thấy, tài liệu đã được cập nhật thông tin mới.

Xóa tài liệu bằng API REST

Định dạng chung của lệnh curl được sử dụng để xóa tài liệu là:

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

Chỉ chủ sở hữu tài liệu và user có quyền delete trên tài liệu mới có thể xóa tài liệu đó.

Hãy sử dụng lệnh này để xóa tài liệu có id user1_list1_id như sau:

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

Thực hiện lệnh này cho kết quả sau:

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

Điều này cho thấy rằng tài liệu đã được xóa thành công. Mọi nỗ lực trong tương lai để truy cập tài liệu này bằng id bây giờ sẽ không thành công.

Cấp quyền truy cập cho user khác bằng API REST

Ta đã thấy cách, theo mặc định, BaasBox ngăn user truy cập các tài liệu không do họ tạo. Tuy nhiên, đôi khi có yêu cầu cấp cho nhiều user quyền truy cập vào một tài liệu. Hãy cấp cho user2 quyền truy cập vào tài liệu với id user1_list1_id .

Định dạng chung của lệnh curl được sử dụng để cấp quyền truy cập vào tài liệu là:

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

Lệnh này sẽ chỉ hoạt động nếu nó được thực thi bởi user có toàn quyền truy cập vào tài liệu này. Trình giữ chỗ access_type có thể có một trong 4 giá trị sau:

  • đọc
  • cập nhật
  • xóa bỏ
  • tất cả

Để cấp quyền truy cập đọc user2 vào tài liệu có id user1_list1_id , hãy thực thi lệnh sau bằng id phiên của user1 :

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

Thực hiện lệnh này cho kết quả sau:

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

Điều này cho biết user2 hiện có quyền truy cập vào tài liệu user1_list1_id . Nếu bạn cố gắng truy cập tài liệu này với quyền là user2 , bây giờ bạn sẽ thấy chi tiết tài liệu thay vì phản hồi lỗi

Bước 6 - Sử dụng Trình giám sát để giữ cho ứng dụng chạy

Khi nào bạn có một ứng dụng đang chạy lâu, luôn có nguy cơ nó có thể ngừng chạy. Điều này có thể xảy ra do nhiều lý do như lỗi ứng dụng, khởi động lại hệ thống, v.v. Bạn nên cấu hình ứng dụng để khởi động lại trong trường hợp tắt đột ngột. Điều này giảm thiểu chi phí quản trị trong việc duy trì ứng dụng.

Đối với ứng dụng này, ta sẽ sử dụng Trình giám sát giúp dễ dàng quản lý các ứng dụng đang chạy lâu. Nếu bạn chưa quen với Supervisor, bạn có thể đọc thêm về cách cài đặt và quản lý Supervisor trên Ubuntu tại đây .

Đầu tiên, hãy cài đặt Supervisor:

  • sudo apt-get install supervisor

Để làm cho Người giám sát quản lý ứng dụng của ta , ta cần tạo một file cấu hình. Ta sẽ đặt tên cho file này là baasbox.conf và đặt nó trong folder /etc/supervisor/conf.d .

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

Nhập phần sau vào file , thay thế các phần được đánh dấu nếu thích hợp.

/etc/supervisor/conf.d/baasbox.conf
[program:Baasbox] directory = /home/sammy/baasbox-0.9.5 command = /home/sammy/baasbox-0.9.5/start autostart = true autorestart = true startsecs = 5 user = sammy stdout_logfile = /var/log/supervisor/baasbox.log 

Bây giờ ta cần thông báo cho Người giám sát về những thay đổi này và để Người giám sát sử dụng những thay đổi này. Thực hiện lệnh sau:

  • supervisorctl reread

Sau đó chạy lệnh này:

  • supervisorctl update

Như vậy, khi nào ứng dụng của bạn tắt vì bất kỳ lý do gì, Người giám sát sẽ đảm bảo ứng dụng khởi động lại mà không yêu cầu bất kỳ sự can thiệp thủ công nào.

Kết luận

Trong bài viết này, ta đã giới thiệu cho các bạn cách sử dụng BaasBox để quản lý nội dung, user và quyền bằng console dành cho administrator và sử dụng REST API. Có rất nhiều thứ khác mà BaasBox cung cấp ngoài các chủ đề được đề cập trong bài viết này. Bạn có thể khám phá thêm console quản trị BaasBox để làm quen với các phần cho phép bạn quản lý file , lấy và khôi phục các bản backup database và cấu hình tính khả dụng của các điểm cuối API. Quan trọng hơn, bây giờ bạn đã sẵn sàng để bắt đầu sử dụng BaasBox trong ứng dụng tiếp theo của bạn .


Tags:

Các tin liên quan

Cách thiết lập notebook Jupyter để chạy IPython trên Ubuntu 16.04
2016-06-15
Cách cài đặt Go 1.6 trên Ubuntu 16.04
2016-05-19
Cách cài đặt và sử dụng Composer trên Ubuntu 16.04
2016-05-17
Cách tập trung log với Rsyslog, Logstash và Elasticsearch trên Ubuntu 14.04
2016-05-16
Cách cài đặt và cấu hình Elasticsearch trên Ubuntu 16.04
2016-05-04
Cách cài đặt và cấu hình VNC trên Ubuntu 16.04
2016-04-26
Cách thêm không gian swap trên Ubuntu 16.04
2016-04-25
Cách cài đặt WordPress với LEMP trên Ubuntu 16.04
2016-04-25
Cách cài đặt Java với Apt-Get trên Ubuntu 16.04
2016-04-23
Cách cài đặt WordPress với LAMP trên Ubuntu 16.04
2016-04-22