快速尝试了一下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
registration.png
composer.png

应用程序中的MongoDB设置

mongodb_menu.png

将设置如下

mongosettings.png

設定例
名稱:sampledb
使用者名稱:user
主機:localhost
埠號:27017
資料庫:sampledb
連接器:MongoDB

点击“保存数据源”->“测试连接”。

如果成功就可以

创建 Model

点击左侧的“新增模型”,进行以下设置。

modelapi.png

设置示例
名称:书籍
复数形式:书籍
基本模型:持久模型
数据源:示例数据库
属性1:
名称:名称
类型:字符串
必需:勾选
属性2:
名称:价格
类型:数字
必需:勾选

请确认是否能够访问。

返回的是空的 JSON。http://localhost:3000/api/books

调用API

play.png

数据注册

使用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应用程序。

广告
将在 10 秒后关闭
bannerAds