All Projects → JavaBaas → JavaBaasServer

JavaBaas / JavaBaasServer

Licence: GPL-3.0 License
JavaBaas server application.

Programming Languages

javascript
184084 projects - #8 most used programming language
java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to JavaBaasServer

vbo365-rest-self-service
Unofficial Self-Service Web Portal for Veeam Backup for Microsoft Office 365
Stars: ✭ 24 (-56.36%)
Mutual labels:  baas
playground-for-android
Simple examples that help you get started with Appwrite + Android (=❤️)
Stars: ✭ 48 (-12.73%)
Mutual labels:  baas
js-sdk
Baqend JavaScript SDK and CLI for High-Performance Websites
Stars: ✭ 25 (-54.55%)
Mutual labels:  baas
parse-hipaa
HIPAA & GDPR compliant ready parse-server with postgres/mongo, parse-hipaa-dashboard. Compatible with ParseCareKit
Stars: ✭ 74 (+34.55%)
Mutual labels:  baas
demos-for-svelte
Demos and tutorials for getting started with Appwrite + Svelte
Stars: ✭ 27 (-50.91%)
Mutual labels:  baas
sdk-for-kotlin
[READ-ONLY] Official Appwrite Kotlin SDK 💙🧡
Stars: ✭ 41 (-25.45%)
Mutual labels:  baas
Js Realtime Sdk
LeanCloud Realtime Message JavaScript SDK
Stars: ✭ 193 (+250.91%)
Mutual labels:  baas
faugra
A micro "no-backend" backend framework 🤯 Quickly build powerful BaaS using only your graphql schemas
Stars: ✭ 44 (-20%)
Mutual labels:  baas
demos-for-vue
Demos and tutorials for getting started with Appwrite + Vue.js
Stars: ✭ 37 (-32.73%)
Mutual labels:  baas
playground-for-node
Simple examples that help you get started with Appwrite + Node.js (=❤️)
Stars: ✭ 39 (-29.09%)
Mutual labels:  baas
vbo365-rest
Unofficial Self-Service Web Portal for Veeam Backup for Microsoft Office 365
Stars: ✭ 44 (-20%)
Mutual labels:  baas
sdk-for-php
[READ-ONLY] Official Appwrite PHP SDK 🐘
Stars: ✭ 109 (+98.18%)
Mutual labels:  baas
ParseCareKit
Securely synchronize any CareKit 2.1+ based app to a Parse Server Cloud. Compatible with parse-hipaa.
Stars: ✭ 28 (-49.09%)
Mutual labels:  baas
hoodie-notes
A Markdown notebook built with React and Hoodie
Stars: ✭ 17 (-69.09%)
Mutual labels:  baas
sdk-for-ruby
[READ-ONLY] Official Appwrite Ruby SDK 💎 🔴
Stars: ✭ 45 (-18.18%)
Mutual labels:  baas
Gxb Core
GXChain Blockchain implementation
Stars: ✭ 226 (+310.91%)
Mutual labels:  baas
BaaSDelphiSamples
💾 Code samples for BaaS and PaaS using Delphi
Stars: ✭ 30 (-45.45%)
Mutual labels:  baas
pandora
Small box of pandora to prototype your app with ready for use backend. This is just my compilation of different solutions occasionally applied in hackathons and challenges
Stars: ✭ 26 (-52.73%)
Mutual labels:  baas
sdk-for-dart
[READ-ONLY] Official Appwrite Dart SDK 💙
Stars: ✭ 79 (+43.64%)
Mutual labels:  baas
opentab
开源的轻应用后端(Open Tiny App Backend),轻量,高效,易部署。
Stars: ✭ 27 (-50.91%)
Mutual labels:  baas

JavaBaas

JavaBaas 是基于Java语言开发的后台服务框架,其核心设计目标是实现移动客户端、网页应用的后台数据存储、物理文件存储、消息推送等功能,极大的降低后台开发难度,实现快速开发。

使用 JavaBaas 提供的工具进行简单的配置,即可完成后台搭建。后台搭建成功后,即可使用RestAPI、iOS/Android-SDK进行数据的操作。

项目地址:

技术讨论群:479167886

完整文档参见:www.javabaas.com(原域名备案出现问题,需要重新备案,目前在备案流程中,暂时可以使用www.zangyilin.com访问)

主要功能

  • 结构化数据存储
  • RestAPI接口
  • iOS/Android SDK
  • 物理文件存储
  • ACL权限管理机制
  • 用户系统
  • 消息推送

快速上手

一、安装

1.Docker方式

JavaBaas提供了完整的Docker演示环境(包含数据库等),需安装Docker后使用。

docker pull javabaas/javabaas-starter
docker run -p 8080:8080 javabaas/javabaas-starter

执行成功后,即可使用本地8080端口访问JavaBaas环境。

以上的执行方式每次会创建全新的执行环境,如需要持久化数据,需使用DockerVolume

docker run -p 8080:8080 -v /usr/javabaas:/data/db javabaas/javabaas-starter

其中/usr/javabaas为本地数据存储目录,请创建该目录或修改为你所需要的目录。

2.Jar包方式

也可以选择使用jar包方式启动JavaBaas。

JDK

JavaBaas基于JDK1.8编写,编译及运行需要安装JDK1.8环境。

提示: 在Oracle官网可以下载最新的JDK安装包

MongoDB

JavaBaas使用MongoDB作为存储数据库,请先正确安装并启动MongoDB数据库。

提示: 在MongoDB官网可以下载最新的MongoDB官网

Redis

JavaBaas使用Redis作为缓存引擎,请先正确安装并启动Redis数据库。

提示: 在Redis官网可以下载最新的Redis官网

启动

Server目录下的JavaBaas.jar为系统启动文件,系统依赖环境配置正确后,使用以下命令启动系统:

java -jar JavaBaas.jar

看到以下信息,表明系统启动成功。

[main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
[main] c.s.b.c.l.ApplicationEventListener       : JavaBaasServer started.
[main] c.j.s.c.l.ApplicationEventListener       : Key: JavaBaas
[main] c.j.s.c.l.ApplicationEventListener       : Timeout: 600000
[main] c.s.b.c.l.ApplicationEventListener       : Host:127.0.0.1
[main] c.j.s.c.l.ApplicationEventListener       : JavaBaas status at http://127.0.0.1:8080
[main] c.j.s.c.l.ApplicationEventListener       : Browse REST API at http://127.0.0.1:8080/explorer.html
[main] com.staryet.baas.Main                    : Started Main in 2.653 seconds (JVM running for 3.232)

二、命令行工具

JavaBaas系统成功启动后,默认将在http 8080端口监听所有用户请求。此时首先要使用命令行工具JBShell创建应用。

命令行工具JBShell是JavaBaas的配套工具,使用JBShell可以完成应用的创建删除、类的创建删除、字段的创建删除、对象的增删改查等操作,以及一些便捷的辅助功能。

JBShell基于java编写,编译及运行需要安装JDK环境。

Mac&Linux安装

在命令行中执行

curl -s "http://get.javabaas.com/jbshell.sh" | bash

安装成功后将看到以下信息

成功安装jbshell
请打开一个新的终端,或者在当前终端执行下面命令:
    source "/Users/staryet/.javabaas/jbshell/export/jbexport"
开始造吧!!!

打开一个新窗口,或在当前窗口执行以上命令即可完成JBShell工具安装。

Windows安装

启动

在命令行中使用以下命令启动JBShell工具:

jb

启动成功后显示以下信息

   ___                     ______
  |_  |                    | ___ \
    | |  __ _ __   __ __ _ | |_/ /  __ _   __ _  ___
    | | / _` |\ \ / // _` || ___ \ / _` | / _` |/ __|
/\__/ /| (_| | \ V /| (_| || |_/ /| (_| || (_| |\__ \
\____/  \__,_|  \_/  \__,_|\____/  \__,_| \__,_||___/
Version:1.0.0
Host:http://localhost:8080/api/
AdminKey:JavaBaas
BAAS>

三、构建数据

创建应用

JavaBaas中,最高层的组织结构为应用,各应用之间权限、用户、数据相互隔离。为了开始使用JavaBaas,我们首先需要创建一个应用。

首先启动命令行工具,在命令行工具中,使用命令app add Blog,创建一个博客应用。

BAAS>app add Blog
应用创建成功
设置当前应用为 Blog

现在,我们成功创建了一个名为Blog的应用。

提示: 一般情况下建议使用大写字母开头做为应用名称

查看应用列表

在命令行工具中,使用apps命令可以查看当前JavaBaas中所有的应用。

BAAS>apps
Blog

现在我们可以看到,系统中只有我们刚刚创建的,名为Blog的一个应用。

切换当前应用

在命令行工具中,使用use命令即可切换当前应用,切换应用后,即可为当前应用创建类来存储数据。

BAAS>use Blog
设置当前应用为 Blog

现在我们的应用即切换为刚刚创建的Blog

创建类

JavaBaas中,数据使用进行组织。用户可以自由创建类,类名需使用英文字母开头且名称中只能包含数字与英文字母。类创建后,需要在类中创建字段以存储数据。同时、系统初始化后会自动创建用户类、设备类、文件类等系统内建类,内建类名使用下划线_开头,系统内建类禁止删除或修改。

现在我们使用命令class add Article创建一个类用于存储博客中的文章信息。

Blog>class add Article
类创建成功

现在我们便在Blog应用中创建了名为Article的类。

提示: 一般情况下建议使用大写字母开头做为类名称

查看类列表

使用class命令,可以查看当前应用下所有的类。

Blog>class
_File(0)
_Installation(0)
_PushLog(0)
_User(0)
Article(0)

可以看到,当前应用中存在系统内建的文件类、设备类、推送日志类、用户类,以及我们刚刚创建的用于存储文章的Article类。

切换当前类

成功创建Article类后,我们需要为类创建用于存储文章标题、作者等信息的字段以存储数据。首先,我们需要将当前类切换至Article以便在此类下创建字段。

使用set Article命令,将当前类切换至Article

Blog>set Article
设置当前类为 Article
Blog Article>

切换完成后,光标变为Blog Article>,表示当前应用为Blog,当前类为Article

创建字段

使用field add title命令,在Article类中创建一个用于存储文章标题的字符型字段。

Blog Article>field add title
请选择FieldType 默认为STRING
1 STRING
2 NUMBER
3 BOOLEAN
4 DATE
5 FILE
6 OBJECT
7 ARRAY
8 POINTER
0 取消
>1
创建字段成功

创建字段时,需要选择数据类型。此处我们选择1(字符型)。现在我们就在类Article中创建了名为title的字符型字段。

使用field add read命令,在Article类中创建一个用于存储文章浏览次数的数值型字段。

Blog Article>field add read
请选择FieldType 默认为STRING
1 STRING
2 NUMBER
3 BOOLEAN
4 DATE
5 FILE
6 OBJECT
7 ARRAY
8 POINTER
0 取消
>2
创建字段成功

现在我们在类Article中创建了名为read的数值型字段。

提示: 一般情况下建议使用小写字母开头做为字段名称

查看字段列表

使用命令fields即可查看当前类中的所有字段列表。

Blog Article>fields
   <NUMBER>  read
   <STRING>  title

可以看到,当前类中存在我们刚创建的两个字段。

存储数据

成功创建类并添加字段后,我们就可以开始存储数据操作了(包括使用RestAPI以及iOS/Android-SDK)。此处我们先使用命令行工具进行基本的增删改查操作。

插入数据

使用命令addArticle类中插入数据。

Blog Article>add {"title":"StarWars","read":10}
对象创建.

现在我们便在Article类中插入了一条数据记录。

提示: 在 JavaBaas 中,所有数据以json形式存储。详情参见数据存储文档。

查询数据

使用命令list查询Article类中的所有数据。

Blog Article>list
{"className":"Article", "objectId":"06904d004d2d462b888800abb9d03a8b", "updatedAt":"1509953994688", "createdAt":"1509953994688", "serverData":{"read":10,"title":"StarWars"}}

可以看到,现在Article类中只有一条刚刚创建的数据。

表格打印

使用命令table打印Article类中的所有数据。

Blog Article>table
┌──────────────────────────────────┬────────────────────┬────────────────────┐
│ id                               │ read               │ title              │
│ <STRING>                         │ <NUMBER>           │ <STRING>           │
├──────────────────────────────────┼────────────────────┼────────────────────┤
│ 06904d004d2d462b888800abb9d03a8b │ 10                 │ StarWars           │
└──────────────────────────────────┴────────────────────┴────────────────────┘

删除数据

使用命令del id,删除指定数据,其中 id 为刚才查询结果中的id。

Blog Article>del 06904d004d2d462b888800abb9d03a8b
对象删除.

四、使用RestAPI测试工具

我们已经成功创建了应用,构建了数据结构,并存储了一些数据。我们可以使用客户端SDKREST API存取数据了。

为了方便测试API接口,JavaBaas内建了RestAPI测试工具。启动成功后,使用浏览器访问http://127.0.0.1:8080/explorer.html页面即可看到API测试工具。

在文本框输中输入AdminKey(默认为JavaBaas)并回车,然后在下拉菜单中选择应用,此处我们选择刚刚创建的博客应用Blog。

此时会显示应用中所有类的列表,此处可以看到我们已经创建的Article类,点击后,会展示对应类的数据操作接口(增删改查、计数等)。

展开GET方法,点击测试按钮,即可请求查询接口。

测试后,可以看到请求结果,此处看到的数据即为我们刚才使用命令行工具添加的数据。

提示: API测试工具中会显示完整的请求结构,可以参照此处显示的请求构建http请求。

下面我们使用RestAPI测试工具JavaBaas中添加一条数据。选择POST方法,并按照Article类的数据格式构建一条新数据,然后点击测试按钮。

现在我们再调用GET方法,查询表中的数据,可以看到,此时表中已经有了两条记录。

五、使用客户端SDK

在生产环境中,我们可以使用客户端SDKREST API存取数据。详见客户端SDK以及REST API相关文档。

自定义配置

配置文件

Server目录下的application.properties为配置文件。

MongoDB配置

在application.properties中配置MongoDB数据库连接信息。

spring.data.mongodb.host = 127.0.0.1 //MongoDB数据库地址 默认为127.0.0.1
spring.data.mongodb.database = baas //用于存储数据的数据库名称 默认为baas
spring.data.mongodb.username = baas //用户名 不填写为无身份校验
spring.data.mongodb.password = baas //密码 不填写为无身份校验
spring.data.mongodb.authentication-database = admin //用于校验身份的数据库

Redis配置

在application.properties中配置Redis数据库连接信息。

spring.redis.host = 127.0.0.1 //Redis数据库地址

监听端口

application.properties中配置监听端口,不设置默认为8080。

server.port = 8080

超级密钥

超级密钥用于鉴定管理员的超级权限,系统的核心管理接口需要使用此权限进行调用,默认密钥为JavaBaas。超级密钥可以自行设置,建议使用32位随机字符串。如:c3ca79cca3c24147902c1114640268a5

application.properties中配置超级密钥,不设置默认为JavaBaas

注意: 为了保障数据安全,强烈建议不要使用默认密钥!

baas.auth.key = c3ca79cca3c24147902c1114640268a5

服务器地址

JavaBaas需要接收外部系统回调请求,因此需要配置系统部署服务器的ip地址。(本地测试时可使用127.0.0.1代替,生产环境需配置公网ip地址。)

例如,在application.properties中配置当前服务器ip信息。

host = http://58.132.171.126/

七牛云存储

为了使用七牛云存储作为物理文件存储引擎,需要配置七牛云存储相关信息。 在application.properties中配置以下信息。

qiniu.ak = 七牛云存储的帐号ak
qiniu.sk = 七牛云存储的帐号sk
qiniu.bucket = bucket名称
qiniu.file.host = bucket的存储域名

常见问题

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].