bigdecimal 平均数_云函数 · – Bmob后端云

Java云函数¶

云函数是一段部署在服务端的代码片段,采用 java 或 node.js 进行编写,然后部署运行在Bmob服务器

通过云函数可以解决很多复杂的业务逻辑,从此无需将要将大量的数据发送到移动设备上做计算处理

只需将这些计算都交由服务端运算处理,最后移动客户端仅仅需要接收云函数运算处理返回的数据结果就可以了

通过更新云函数代码片段,客户端无需更新,便满足业务改动的需求。这样云函数便有更多的灵活性和自主性

调用方法¶

云函数提供了以下几种方式提供调用:

调用方式

所需信息

优点

SDK

AppId

交互自带加密,接入快速

RestApi

AppId、RestKey

所有平台适用,通用性强

Http请求

Secret Key

所有平台适用,可用浏览器打开

Restful API¶

调用 api.bmob.cn ,与调用NodeJS版云函数的方式 完全相同。这种方式下,服务器会 自动判断语言,但 限制 Method 为 Post 且 Content-Type 为 application/json

调用 javacloud.bmob.cn ,调用方式基本相同,这种方式 仅可调用Java云函数,但 不限制 Method 和 Content-Type

// 使用Appid + RestKey请求api.bmob.cn域名(自动判断语言)

curl -X POST \

-H "X-Bmob-Application-Id: Your Application ID" \

-H "X-Bmob-REST-API-Key: Your REST API Key" \

-H "Content-Type: application/json" \

-d '{"name": "zwr"}' \

https://api.bmob.cn/1/functions/[function name]

// 使用Appid + RestKey请求javacloud.bmob.cn域名(仅支持Java云函数)

curl -X [method] \

-H "X-Bmob-Application-Id: Your Application ID" \

-H "X-Bmob-REST-API-Key: Your REST API Key" \

-d '[body]' \

https://javacloud.bmob.cn/1/functions/[function name]

// 使用Master Key请求

curl -X [method] \

-H "X-Bmob-Master-Key: Your Master Key" \

-d '[body]' \

https://javacloud.bmob.cn/1/functions/[function name]

Http请求¶

// 使用Secret Key请求

curl -X [method] \

-H "header key: header value" \

-d '[body]' \

https://javacloud.bmob.cn/[secret key]/[function name]

// 或者直接用浏览器打开,即GET请求

https://javacloud.bmob.cn/[secret key]/[function name]?k1=v1&k2=v2

// 当直接进入 https://javacloud.bmob.cn/[secret key] 时,会触发 index 方法

// 当 function name 不存在是,会触发 notfound 方法

以下是Bmob各种SDK调用Java云函数的方法,与调用NodeJS版云函数的方式 完全相同

Android SDK¶

AsyncCustomEndpoints ace = new AsyncCustomEndpoints();

ace.callEndpoint(Context, String funcName, JSONObject params, new CloudCodeListener() {

@Override

public void done(Object object, BmobException e) {

if (e == null)

Log.e(TAG, "Succeed: " + object);

else

Log.e(TAG, "Failed: " + e);

}

});

微信小程序¶

Bmob.Cloud.run('test', {'name': 'zwr'}).then(function (result) {

console.log("Succeed: ");

console.log(result);

}, function (error) {

console.log("Failed: ");

console.log(error);

});

iOS SDK¶

[BmobCloud callFunctionInBackground:@"funcName" withParameters:nil block:^(id object, NSError *error) {

if (error) {

NSLog(@"Failed: %@",[error description]);

}else{

NSLog(@"Succeed: %@",object);

}

}] ;

C# SDK¶

IDictionary parameters = new IDictionary{ {"name","zwr"}};

Bmob.Endpoint("test", parameters, (resp, exception) =>

{

if (exception == null)

{

print("Succeed: " + resp);

}

else

{

print("Failed: " + exception.Message);

}

});

PHP SDK¶

$cloudCode = new BmobCloudCode('test'); //调用名字为test的云函数

$res = $cloudCode->get(array("name"=>"zwr")); //传入参数name,其值为zwr

JavaScript¶

Bmob.Cloud.run('test', {"name":"tom"}, {

success: function(result) {

console.log("Succeed: ");

console.log(result);

},

error: function(error) {

console.log("Failed: ");

console.log(error);

}

});

日志¶

可在Bmob后台根据时间、日志级别、内容关键字、方法名搜索想要的日志

每个应用拥有最大10m的日志空间,循环写入

高级用户有实时日志功能

代码规范¶

java云函数必须遵循以下格式:

public static void onRequest(final Request request, final Response response, final Modules modules) throws Throwable {

// 上面这个方法体,不允许任何修改

// 这里使用Java编写云函数

// 最后一个字符必须是 }

}

代码不能包含以下关键字:(保存代码时有错误提醒)

Class

File

System

...

需要获取当前毫秒时,可用 getTime() 、new java.util.Date().getTime() 替代 System.currentTimeMillis()

如果确实需要用到被禁止使用的关键字,例如查询"File"表,可用"F"+"ile"的形式拼接

不可包含/**/注释,如需注释,请用 //

仅可写一个Java的方法,不能写多个方法、类变量、静态变量等

云函数执行完毕后,必须用response.send方法返回响应数据,否则会被当做超时,多次超时可能会被暂停使用

工具¶

Github页面如下:

libs目录 下提供了 Bmob-JavaCloud-Apis_xxx.jar 以供开发者使用IDE(ecplise、as)开发时参考

exec目录 下提供了 macos、linux、windows 64位等平台的可执行文件,以供开发者快速进行代码的上传、修改、同步到本地和删除

samples目录 提供了案例

doc目录 下提供了文档

方法参数¶

Request对象¶

onRequest方法参数中 Request request 包含了本次请求的全部信息:

名称

类型

获取方法

示例

路径Path

String

request.getPath()

/xxxxxxxxxxxxxxxx/test1

方法Method

String

request.getMethod()

POST

请求头Headers

JSONObject

request.getHeaders()

{"User-Agent":["Chorme"]}

请求体Body

byte[]

request.getBody()

[98, 109, 111, 98]

Get参数

JSONObject

request.getQueryParams()

{"page": "1"}

Body内参数

JSONObject

request.getParams()

{"username": "zwr"}

单个请求头

String

request.getHead

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值