关于我,欢迎关注
csdn博客:ccapton(http://blog.csdn.net/ccapton) 微信:Ccapton
Github: (https://www.github.com/ccapton)
个人博客:http://www.ccapton.cn
E-mail: 437499914@qq.com、chenweibin1125@foxmail.com

一、前言

由于自己没有专心研究后端技术,很多与数据库打交道的工作让我这个菜鸟弄起来很麻烦,之前做android应用用到自己的独立数据都是寄托于bmob云后端平台,但是一直调用的是它集成在android端的sdk代码来实现数据库数据的更新与获取。这段时间突然想到这个调用sdk代码的方式真的是太僵硬了,而且把大量原本应该自由变更的逻辑写死在了移动应用内,以后业务需求变了就只能更新app了。所以用云函数进行app数据交互是一个对于移动端开发者获取、更新数据的最佳方式吧。




图中被涂掉的部分是你的bmob应用的Secret Key。

二、如何调用云函数

通过查看官方的教程,我们发现有多种途径android,iOS,Restful, C# , Javascript, php, web都可以调用云函数,根据不同的平台我们可以选择对应平台的sdk代码调用云函数,不过我今天写这篇文章的目的是为了展示最通用最自由来获取数据的方式,所以用的是 直接用访问http的方式

云函数的http调用的url拼接规则为

1. GET方式
http://cloud.bmob.cn/{Secret Key}/{云函数名}?{参数名}={值}&{参数名}={值}…

get方式可在浏览器直接输入地址和参数查看数据,测试的时候用get很直观,但是为了安全起见还是用post方式吧

2. POST方式
**需要在你的应用内编写相关POST代码(主要是把参数体添加到云函数所在的url
例如 http://cloud.bmob.cn/{Secret Key}/{云函数名})**

(ps:大括号 { } 不要写上去,括号里的内容才是你要替换的)
调用方式就写到这里,不懂的朋友可以联系我 (我也是看bmob文档的)

三、如何写云函数

官方教程 http://doc.bmob.cn/cloud_function/web/develop_doc/

1.首先先创建一个自定义的云函数

2.命名这个函数,并确认


这样一个空的云函数就部署好了,

3.了解云函数结构

空的云函数如下所示

function onRequest(request, response, modules) {//  云函数包括三大参数 request, response, modules// request 对象包含请求体的所有信息和操作// response 对象包含返回体的所有信息和操作// modules 是Bmob云函数提供给大家的各种对象处理的模块
/*包括数据库对象(oData)、文件对象(oFile)、地理位置对象
(oLocation)、关联关系对象(oRelation)、原子操作对象(oAtom)、
数据批量操作对象(oBatch)、数组对象(oArray)、消息推送对象(oPush)、
云函数对象(oFunctions)、HTTP对象(oHttp)、字符编码转换对象(oEncodeing)、
事件对象(oEvent)、bql对象(oBql)、html元素解析对象(oHtmlparser)、
加密对象(oCrypto)。 */
/*
示例://获取数据库对象var db = modules.oData;//下面进行其他操作
*/
}

我对于云函数的介绍就这么多,很多内容我也是刚接触,不懂的朋友都去看文档,看文档,看文档(重要的事情说三遍)。

4 .示例云函数代码(自己写的登录模块)

function onRequest(request, response, modules) {var httptype = request.method;var username_get = request.query.username;var password_get = request.query.password;var userinfo_get = request.query.userinfo; var username_post = request.body.username;var password_post = request.body.password; var userinfo_post = request.body.userinfo;var username;var password; var userinfo;if ("GET" == httptype) {//采用get方式调用云函数 username = username_get;password = password_get;userinfo = userinfo_get;}else{//采用post方式调用云函数    username = username_post;password = password_post;userinfo = username_post;} var db = modules.oData;if(username === "" || username === null ){response.send("用户名不能为空");} else if(password === "" || password === null){response.send("密码不能为空");}else{db.userSignUp({"data":{"username":username,"password":password} //用户注册的信息,格式为JSON},function(err,data){   response.send(data);//回调函数if(data){var dataObject = JSON.parse(data);if(dataObject.error == null){//需要设置登录之后获取的sessionToken头信息db.setHeader({"X-Bmob-Session-Token":dataObject.sessionToken});db.updateUserByObjectId({"objectId":dataObject.objectId ,data:JSON.parse(userinfo)},function(err,data){response.send("更新成功");})}else{response.send("找不到该用户!");}}else{response.send(err);}}); }
} 

四、通过android调用云函数(访问http方式)

android端更新用户信息,关键代码
源码 https://github.com/Ccapton/BaseApp
网路请求框架我用的是okgo库(okhttp封装库 https://github.com/jeasonlzy/okhttp-OkGo)

 binding.update.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String url = getString(R.string.bmob_function_base_url)+ getString(R.string.bmob_function_update);JSONObject jsonObject = new JSONObject();try {jsonObject.put("face",binding.face.getText().toString());jsonObject.put("birthday",binding.birthday.getText().toString());} catch (JSONException e) {e.printStackTrace();}OkGo.<String>post(url).tag(UpdateFragment.this.getActivity()).params("username",binding.phone.getText().toString()).params("password",binding.psw.getText().toString()).params("userinfo",jsonObject.toString()).execute(new StringCallback() {@Overridepublic void onSuccess(Response<String> response) {System.out.println("UpdateFragment.onSuccess");ToastUtils.showShort(response.body());}});}});

五、后记

昨天我也是刚刚写完三个云函数:注册、登录、更新信息,感觉很不错,所以才有写这篇文章的动机。目前云函数功能在bmob应用创建前40天免费,之后要收费了,要商用的小伙伴要注意续费呦,现在云函数的使用价格是50元/月。

好吧,祝各位工作顺利、生活愉快!
欢迎访问我的github https://github.com/Ccapton
android端测试项目 https://github.com/Ccapton/BaseApp

利用Bmob云后端云函数实现移动应用与数据库的数据交互相关推荐

  1. Bmob移动后端云服务平台

    Bmob移动后端云服务平台--Android从零开始--(二)android快速入门 上一篇博文我们简单介绍何为Bmob移动后端服务平台,以及其相关功能和优势.本文将利用Bmob快速实现简单例子,进一 ...

  2. android中bmob云存储,Android中的Bmob移动后端云服务器功能

    PS:一般情况下,我们在写android程序的时候,想要实现登录注册功能,可以选择自己用servlet作为服务端来实现过滤没有注册过的用户,但是太麻烦,而且不是随时都可以用的.这里介绍一个移动后端云服 ...

  3. Android使用Bmob移动后端云Restful API需要注意的问题

    如果你自己想做一个客户端玩玩,但是又不想去搭建后台服务器,显然Bmob移动后端云是你的最佳选择.官方地址见bmob,文档地址见http://www.bmob.cn/docs.他提供了Android的s ...

  4. Android之Bmob移动后端云服务器

    源码下载:http://download.csdn.net/download/jjhahage/10034519 PS:一般情况下,我们在写android程序的时候,想要实现登录注册功能,可以选择自己 ...

  5. Bmob 移动后端云服务器平台实现登录注册

    源码下载:http://download.csdn.net/download/jjhahage/10034519 PS:一般情况下,我们在写android程序的时候,想要实现登录注册功能,可以选择自己 ...

  6. bmob php,文档-Bmob移动后端云服务平台

    Q:php为什么添加数据的时候字段的值为中文就会出错 A:检查下你的php编码,建议改为utf-8编码. Q:有没有ts的sdk A:php的sdk只有一个 Q:使用PHP CURL 推送消息的代码, ...

  7. bmob项目php后端,bmob开发文档-Bmob移动后端云服务平台

    容器服务快速入门 简介 您可以把代码部署到Bmob容器上运行. 目前容器支持PHP和Java的语言环境. 你可以将整个网站架设在Bmob容器之上,提供了网站托管服务. 只需要完成下面的两步,你就可以使 ...

  8. 鱼和熊掌可以兼得,云原生开启“数据库大数据一体化”新时代

    允中 发自 凹非寺 量子位 编辑 | 公众号 QbitAI 10月23日数据湖高峰论坛上,阿里巴巴集团副总裁.阿里云智能数据库产品事业部负责人.达摩院数据库与存储实验室负责人李飞飞表示:"云 ...

  9. 记录——python与华为云数据库MYSQL的交互

    前言 在学习过程中想要将程序处理后的图片保存到云端以供更加方便的管理及使用,因此学习了一点这方面的东西.(但基本上都是官方提供好的SDK)       本文主要记录下华为云的使用.(因为找合适的云平台 ...

最新文章

  1. linux系统中用户切换
  2. Unity3D热更新全书-脚本(二) 两级分化
  3. echarts label加边框_玩转ECharts之实现“动态颜色的Label”
  4. 传统公司部署OpenStack(t版)简易介绍(一)——环境部署
  5. 第四篇 Entity Framework Plus 之 Batch Operations
  6. QT Linux打包发布
  7. java重命名package_AndroidStudio怎么重命名java目录下的包名(如cn.zsn.app)
  8. html form-inline,如何將HTML
  9. 相对于其他框架的离子应用开发:它被炒作了吗?
  10. oracle如何储存超长汉子_厦门到惠州整车运输超长超宽超重运输
  11. 企业文化是数字化转型最大障碍-解读《2022年首席数据官调查报告》
  12. HTML常用标签超详细整理
  13. android 摄像头黑屏,5+app 安卓调用摄像头黑屏 苹果可以
  14. 在局域网内怎样使两台计算机共享,怎么使两台电脑共享数据?
  15. 题解 2020级HAUT新生周赛(二)
  16. 个推解读 | 各厂商推送消息分类新规出台,APP开发者必看
  17. Java day23
  18. 计算机基础- -认识内存
  19. CSDN博客字体样式、字体大小、字体颜色、首行缩进调节
  20. 深度揭秘阿里云函数计算异步任务能力

热门文章

  1. 【IIS】网页HTTP错误 404.3 - Not Found解决方案
  2. 史上最全的Excel导入导出之easyexcel
  3. vue父子组件传值方法(案例)
  4. Android m6.0权限问题调用封装utils类 - Permission in Android M
  5. tensorflow cifar10 分类预测实战
  6. (转)将cifar10数据集保存为可见图片
  7. 解决国内 github.com 打不开的准确方法
  8. 接口自动化测试(一)---接口及接口自动化测试概述
  9. 跟我学SpringBoot之Jdbc
  10. python 中arange函数_Python numpy.arange函数方法的使用