• 登录
  • 注册
  • 为何选择 DroiBaaS?
  • 产品
  • 产品
    • 核心功能
    • 技术实力
  • 价格
  • 资源
    • 文档
    • SDK下载
    • 教学视频
  • 关于DroiBaaS
  • 社区
  • 常见问题
  • 联系我们
  • 价格
  • 文档
  • 下载
  • 技术
  • API商城
  • 社区
  • 注册有礼
  • 登录

# 云代码Android调用指南 ## 简介 云代码是部署运行在 DroiBaaS 云引擎上的代码,您可以用它来实现较复杂的,需要运行在云端的业务逻辑。 从客户端执行 DroiBaaS 云代码,使用基础类 DroiCloud 并结合基础类 DroiObject 来定义输入以及输出即可操作云代码。 目前支持 lua,其他语言尽请期待。 ## 执行CloudCode ### 使用DroiCloud类 `DroiBaaS` API 服务可以让开发人员编写 REST API,并可用 ApiKey 控制开放范围。 > **注意:** `apiPath`参数需要您在网页填写的`URI`前添加`/api/v2/`。比如您的`URI`为`yourapi`,则完整的`apiPath`为`/api/v2/yourapi` 调用方式如下: ``` java // 同步方法 DroiCloud.callRestApi(String apiKey, String apiPath, Method method, String params, DroiError error); DroiCloud.callRestApi(String apiKey, String apiPath, Method method, String params, String token, DroiError error); DroiCloud.callRestApi(String apiKey, String apiPath, Method method, T params, Class<V> resultType, DroiError error); DroiCloud.callRestApi(String apiKey, String apiPath, Method method, T params, Class<V> resultType, String token, DroiError error); ``` ``` java // 异步方法 DroiCloud.callRestApiInBackground(String apiKey, String apiPath, DroiCloud.Method method, String params, DroiCallback<String> callback); DroiCloud.callRestApiInBackground(String apiKey, String apiPath, DroiCloud.Method method, String params, String token, DroiCallback<String> callback); DroiCloud.callRestApiInBackground(String apiKey, String apiPath, DroiCloud.Method method, T params, Class<V> resultType, DroiCallback<V> callback); DroiCloud.callRestApiInBackground(String apiKey, String apiPath, DroiCloud.Method method, T params, Class<V> resultType, String token, DroiCallback<V> callback); ``` > **注意:** 当`method`参数为`DroiCloud.Method.GET`或`DroiCloud.Method.DELETE`时,`params`参数必须要传入`null`。`token`参数为当你需要调用其他`DroiBaaS`应用下的`api`时需要传入,获取`token`可以使用`restApi`中的[DroiUser注册&登录](https://www.droibaas.com/html/doc_24715.html#wx-36)或者云代码。 以下方法后续版本会被废弃`@Deprecated` ``` java DroiCloud.callCloudServiceInBackground(String apiKey, String apiPath, DroiCloud.Method method, String params, DroiCallback<String> callback); DroiCloud.callCloudServiceInBackground(String apiKey, String apiPath, DroiCloud.Method method, T params, DroiCallback<V> callback, Class<V> resultType); ``` 开发者可从客户端调用存放于 DroiBaaS 的 CloudCode。通过 DroiCloud 类的 callCloudService 来指定要执行的 CloudCode,想传入的参数,以及接受 CloudCode 的执行结果,以及相关的 DroiError。 > **注意:** callCloudService 已不建议使用,将会在后续版本移除。请改用 callRestApi。 ``` java DroiCloud.callCloudService(String name, T params, Class<V> resultType, DroiError error); DroiCloud.callCloudServiceInBackground(String name, T params, DroiCallback<V> callback, Class<V> resultType) ``` ### 限制 从客户端只能调用 Entry 云代码, 相关定义请参照[云代码 - Entry 云代码](http://www.droibaas.com/html/doc_24269.html#Entry) ### sample 我们提供的 Lua sample CloudCode 中有一个名为 add.lua 的示例。他可以处理两个数字相加并回传其结果。 ``` lua local Logger = require("DroiCloud.CloudLogger") local _M = {} function _M.main(request) local response = {} Logger.log(Logger.DEBUG, "add") if request then local cal = request.num1 + request.num2 --Put result in a table and return it. response['result'] = cal end return response end return _M ``` 若是想要执行 add.lua, 则可以通过下面的程序片段即可: > **提醒:** 请阅读 [继承基础类```DroiObject```](http://www.droibaas.com/html/doc_24125.html#DroiObjectExtension),切记需要把`Add.Request`和`Add.Response`注册到`DroiObject`。 ``` java public class Add { // Input public static class Request extends DroiObject { @DroiExpose public float num1; @DroiExpose public float num2; } // Output public static class Response extends DroiObject { @DroiExpose public float result; } } // v2版本调用方式 public String testAdd() { String apiKey = ""; String apiPath = "/api/v2/add"; Add.Request request = new Add.Request(); request.num1 = 1; request.num2 = 2; // 同步方法 DroiError droiError = new DroiError(); Add.Response response = null; response = DroiCloud.callRestApi(apiKey, apiPath, DroiCloud.Method.POST, request, Add.Response.class, droiError); // 异步方法 DroiCloud.callRestApiInBackground(apiKey, apiPath, DroiCloud.Method.POST, request, Add.Response.class, new DroiCallback<Add.Response>() { @Override public void result(Add.Response response, DroiError droiError) { // 结果处理 } }); } // v1版本,已不建议使用 public void testAddOld() { Add.Request request = new Add.Request(); Add.Response response = null; request.num1 = 1; request.num2 = 2; String target_lua = "add.lua"; DroiError droiError = new DroiError(); response = DroiCloud.callCloudService(target_lua, request, Add.Response.class, droiError); } ```

关于


  • 关于DroiBaaS
  • 使用协议

产品


  • 为何选择DroiBaaS?
  • 价格
  • 核心功能
  • 技术实力

资源


  • Quick Start
  • 文档
  • SDK下载
  • 教学视频
  • 服务申请

帮助


  • 社区
  • 常见问题
  • 联系我们
  • 服务状态

18501785218
baas.business@droi.com


  • 商务咨询QQ:3476783913
  • 技术支持邮箱:baas.support@droi.com
  • 技术交流QQ群:105530629
  • 技术支持工单
  • 微信公众号
  • 官方微博
Copyright©2018,Shanghai Droi Technology Co., Ltd. 上海卓易科技股份有限公司 沪ICP备11020935号-10