如何快速上手 DroiBaaS 云代码操作

2017-01-04 10:01:52 +08:00
 timocoffee

前言

开发一个 App 联网已经是目前移动互联网的趋势,有时候为了提升 App 的弹性,可以不用考虑版本更新的问题,因此需要做一些后台数据配置,以及存放一些动态信息在后台,为此却必须要搞个服务器,架设数据库,还要考虑带宽,实在是有够麻烦!现在有一个联网神器跟大家分享,是近几年国外移动互联网的主流服务—— BaaS ( Backend as a Service ),有了 BaaS 这样的服务,联网再也不如以往艰巨(令人内心煎熬)。 举近半年内在国内移动互联网领域杀出来的 DroiBaaS 为例,只要写个 DroiObject ,数据就在云服务器上,如果需要更复杂一点的商务逻辑,写个云代码就好了。整个过程包含配置也不过就是 10 分钟的事(写完了还可以轻松抽根烟),真的是分分钟钟教你怎么写联网 App 啊!

什么是云代码

云代码是被储存在 DroiBaaS 应用层的一种以 lua 脚本语言撰写的代码,能让应用客户端透过简单的 SDK 和 API 触发执行后回传结果,或自行定义排程时间与参数来定期执行云代码。详细的云代码规范请参考云代码开发文档

操作云代码

云代码的操作可以简单分为三个部分: DroiCLI 初始化、撰写云代码、部署云代码。首先必须先从 DroiBaaS 官方网站下载DroiCLI。 DroiCLI 是一个终端机程式,功能是让我们可以管理云代码档案,并选择下载特定版号的云代码或是发布到开发及生产模式。详细的操作可以查看DroiCLI 开发文档。当我们写好了云代码,接着就要部署到 DroiBaaS 上,才能够开始被应用客户端使用。

DroiCLI 初始化

  1. 从 DroiBaaS Web 页面获取Developer Token
  2. 执行droi init Developer Token 后并选择欲操作的 App.
  3. init 成功后会创建 App 名称的资料夹,并移动到该资料夹。
  4. 第一次使用或是想要新增对应的范本云代码,可以执行droi template
  5. 想要捞取最新的云代码可以执行droi fetch 注意: 此动作会覆盖现行资料夹内所有档

撰写云代码

首先我透过droi template 获取到一个 sample.lua 的范本,对他重新命名以及参照云代码 SDK文件来进行开发。在这边的范例是一个捞取外部天气资料的云代码。可以看到我用到了三个云代码套件:

local _M = {}
local Logger = Droi.CloudLogger
local ws = Droi.WebScraper
local droi_object = Droi.Object
local role = "AaNpVYMBZJLxDDh9yq573jyK3HwxBbxG6a_k9cGL"

function _M.main(Parameters)
    local resp_bool = false
    local resp_message = ""

    -- Query weather by WebScraper
    local resultWS = {}
    local httpStatus = nil
    local scraper = ws.Scraper();
    scraper.SetURL("api.openweathermap.org");
    scraper.SetURI("data/2.5/forecast?id=524901&APPID=1a41f3f7e055102a11bcfeb91b2e721f")
    httpStatus, resultWS = scraper.HTTPPost();
    -- Check http status
    if ( httpStatus == "200") then
        local weather_data = cjson.decode(resultWS)
        local droi_object = Droi.Object
        -- Save data to droi object.
        local obj = droi_object("WeatherForcast", nil, role, weatherData)
        local resp = obj:save()
        if (resp:isSuccess() == true) then
            resp_bool = true
            resp_message = "Update forcast successfully."
            Logger.log(Logger.DEBUG, resp_message)
        else
            resp_message = resp:getMessage()
            Logger.log(Logger.ERR, string.format("update fail, msg: %s", resp:getMessage()))
        end
    else
        resp_message = "Fail to get weather data, httpStatus: "..httpStatus
    end
    local response = {}
    response.bool = resp_bool
    response.msg =  resp_message
    return response
end

return _M

部署到沙箱模式

DroiBaaS 的一大特色就是沙箱模式的设计,沙箱模式算是开发用的,其特点是有隔离仍在进行开发中的代码,让后开发的内容不会影响到线上的产品。要部署到沙箱模式很简单,在执行droi fetch后也有对应的提示。 只要执行droi deploy sandbox 就可以将最新的云代码整包上传到沙箱模式的 App 。

部署到生产模式

当我们在沙箱模式上开发完毕,决定要将特定版号的云代码部署到生产模式也很简单。假设你决定将v0.0.9这个版本部署到生产模式,只要执行droi deploy production即可。

云代码日志观看

整个开发过程都会被记录在日志中,知道云代码是否被正确的执行。譬如上传的云代码有 Syntax errorc 或是该云代码不存在时,客户端执行云代码时会收到Code:1040001,或是有 Runtime error 时,客户端会收到Code:1040003。这时候 DroiBaaS 会将该次的除错信息记录起来,让我们可以从云代码日志中看到对应的信息而进行除错。另外,我们也可使用 Droi.Logger 类来进行自定义的信息输出到日志上。 两个模式的观看路径如下:

沙箱模式

我们可以透过 DroiCLI 进行沙箱模式的云代码日志观看,或是从 DroiBaaS Web->云控中心->云日志->点击开始。

生产模式

透经过路径: DroiBaaS Web->云控中心->云日志->点击开始.

结语

DroiBaaS 将联网变得简单很多,整个过程上手了后真的花不到 10 分钟。最令人满意的是省了租服务器的费用,目前 DroiBaaS 的免费额度在众多平台来说还是最优惠的。 DroiBaaS 把 App 联网的难度大幅降低到初学者都能搞定的难度,只要会些基础代码,就能开发云代码,后台功能变得一点都不复杂! 10 分钟拥有后台能力,真的是可能的,试过就能感受到有多么方便好用!

1552 次点击
所在节点    推广
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/332083

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX