快速尝试了一下LoopBack(从环境搭建到API)+附带Unity的额外内容
LoopBack是什么?
基于Node.js的开源BaaS(后端即服务),其功能包含用户管理、数据存储、Push通知等移动应用开发所需的基本功能相当齐全。作为其特点,具备自由性。由于是从API构建开始,因此可进行定制,并且在需要时可以编写服务器端处理。此外,还可通过插件选择存储数据的位置(如内存、SQLite、MongoDB等)。另外,由于IBM的收购,其作为开源BaaS享有较高知名度,相关文章也很多,非常有帮助。
因为上次已经写过这篇文章,所以你可以参考那篇。
现在Parse已经结束服务,选择的最佳方案是开源的BaaS!我一直在寻找的是LoopBack…!
利用现有环境
macOS X Yosemite(本次在Mac上搭建)
Node.js 4.4.3
loopback 6.0.0
MongoDB v3.2.1
这次的发展
由于环境搭建的过程很长,所以在这里总结一下:
1. 设置Node.js
2. 设置loopback
3. 设置MongoDB
4. 使用slc命令创建应用
5. 在LoopBack应用中安装MongoDB连接器
6. 启动Strong Arc
7. 配置应用的MongoDB
8. 创建模型
9. 调用API
10. 在MongoDB中进行确认
Node.js的安装设置
下载Node.js(选择LTS版本)。
确认Node.js的安装(显示版本号v4.4.3)。
node -v
环路的设置
sudo npm install -g loopback
sudo npm install -g strongloop
通过查询 StrongLoop 命令(显示 strongloop v6.0.0 (node v4.2.4) 等信息)来确认。
slc -v
进行MongoDB的安装设置
参考:为什么选择了MongoDB?
利用Home brew安装MongoDB(因为可能需要一些时间,所以可以休息一下)
brew install mongodb
安装完毕后确认版本(MongoDB shell版本为3.2.1)
mongo --version
启动mongo
mongod --config /usr/local/etc/mongod.conf
使用slc命令创建LoopBack应用程序。
创建一个用于执行作业的目录,并将其移动。
slc loopback
因为这个中年男人问起应用程序的名字,所以这次我们用”sample”这个名字来创建应用程序。
_-----_
| | .--------------------------.
|--(o)--| | Let's create a LoopBack |
`---------´ | application! |
( _´U`_ ) '--------------------------'
/___A___\
| ~ |
__'.___.'__
´ ` |° ´ Y `
? What's the name of your application? sample
自动为您创建所需的文件。
在LoopBack应用程序中安装MongoDB连接器。
在每个应用程序中设置LoopBack和MongoDB之间的连接器。
npm install loopback-connector-mongodb --save
启动强弧
参考:Strong Arc是什么?有什么信息?
请进入loopback应用程序的目录。
slc arc
应用程序中的MongoDB设置
将设置如下
設定例
名稱:sampledb
使用者名稱:user
主機:localhost
埠號:27017
資料庫:sampledb
連接器:MongoDB
点击“保存数据源”->“测试连接”。
如果成功就可以
创建 Model
点击左侧的“新增模型”,进行以下设置。
设置示例
名称:书籍
复数形式:书籍
基本模型:持久模型
数据源:示例数据库
属性1:
名称:名称
类型:字符串
必需:勾选
属性2:
名称:价格
类型:数字
必需:勾选
请确认是否能够访问。
返回的是空的 JSON。http://localhost:3000/api/books
调用API
数据注册
使用curl命令发送POST数据以进行更新。
curl -H "Content-Type: application/json" -d '{"name":"BOOKNAME","price":100}' http://localhost:3000/api/books
确认注册数据
当您访问以下链接时,将会返回一个JSON文件。
http://localhost:3000/api/books
[
{
"name":"BOOKNAME",
"price":100,
"id":"56b1d70aff16fe6887baae52"
}
]
使用Unity连接的示例代码
用UnityWebRequest编写的
数据的注册
public IEnumerator PostBook ()
{
string url = "http://localhost:3000/api/books";
using (UnityWebRequest request = UnityWebRequest.Post (url, " ")) {
// ヘッダ
request.SetRequestHeader ("Content-Type", "application/json");
IDictionary requestBody = new Dictionary<string, object> ();
requestBody.Add ("name", "我輩は猫である");
requestBody.Add ("price", 280);
string bodyData = Json.Serialize (requestBody);
UploadHandler uploadHandler = new UploadHandlerRaw (System.Text.Encoding.UTF8.GetBytes (bodyData));
request.uploadHandler = uploadHandler;
// 通信開始
yield return request.Send ();
// 通信結果
string json = request.downloadHandler.text;
if (request.responseCode == 200) {
Debug.Log ("Success >>" + json);
} else {
Debug.Log ("Error >>" + json);
}
}
}
获取数据
public IEnumerator GetBook ()
{
string url = "http://localhost:3000/api/books";
using (UnityWebRequest request = UnityWebRequest.Get (url)) {
// 通信開始
yield return request.Send ();
// 通信結果
string json = request.downloadHandler.text;
if (request.responseCode == 200) {
Debug.Log ("Success >>" + json);
} else {
Debug.Log ("Error >>" + json);
}
}
}
查询MongoDB内的信息
请确认数据是否已完全录入。
$ mongo
> show dbs //DB名の確認(sampledb)
> use sampledb //DBの使用
> show collections // コレクションの表示(book)
> db.book.find() // bookコレクションの全ドキュメント表示
补充完善
为什么选择MongoDB?
国内的提供BaaS的有Kii Cloud、Nifty Cloud、Applery以及已宣布终止服务的Parse,它们都使用了MongoDB。
※个人的原因是迁移,所以我想顺便调整一下。
※也有“mean stack”的说法,看起来是一个标准的组合。
参考资料:从BaaS研讨会和专家讨论中了解到,BaaS各家公司的目标和差异。
强大的弧是什么?有价值吗?
使用Strong Arc进行了尝试,发现它非常方便(通过命令行界面也可以完成相同的操作)。
要关闭应用程序怎么做?
在Strong Arc的右上方选择STOP来结束loopback应用程序。
获取Strong Arc的结束,并获取slc arc的进程ID并终止。
ps aux | grep node
kill -kill 123456(プロセスID)
创建API
访问http://localhost:3000/explorer/,可以看到books提供的API的列表。
结束
对于不及时完成某事,向对方道歉。非常抱歉。
由于我对MongoDB的了解还比较浅,如果有什么遗漏或错误的地方,我将会进行更新和修正。
下一篇文章将关于部署,点击这里查看。
在Sakura VPS(CentOS 6.7)上部署LoopBack应用程序。