首页
免费后端云服务
关于
推荐
免费图床源码
Search
1
小程序后端入门系列视频教程【一-微信开发工具介绍】
9,722 阅读
2
微信小程序三级联动之多列选择器
9,606 阅读
3
小程序开发免费后端之神秘利器分享
9,536 阅读
4
Golang-开发企业级资源权限管理【第一步表设计】-1
9,081 阅读
5
学会微信服务端开发第一步
8,979 阅读
日常记录
日常
随笔
Bmob后端云
从零开始学物联网
Serverless实战驾校小程序
心邮
Serverless
向量数据库
登录
Search
Magic
累计撰写
124
篇文章
累计收到
64
条评论
首页
栏目
日常记录
日常
随笔
Bmob后端云
从零开始学物联网
Serverless实战驾校小程序
心邮
Serverless
向量数据库
页面
免费后端云服务
关于
推荐
免费图床源码
搜索到
10
篇与
的结果
2024-11-05
Serverless实战驾校小程序数据库设计连载一
从今天开始,我会文字直播开发这个驾校小程序整个流程。 1. 项目要求小程序端WEB管理后台时间在最短的时间内上线2. 项目功能 参考驾考宝典、主栏目分为科目一、科目四、满分学习、注销恢复、资格证,包含小车、客车、摩托车等,功能包含视频讲解、章节练习、模拟考试、错题、收藏等等。 支持支付、分享、提成、提现等3. 项目选型 由于要求最快时间内上线,我们小程序选择 Serverless架构。 这里使用以下技术产品小程序端:Bmob后端云+iviewVUE + Bmob后端云Bmob后端云,自带了支付,生成二维码等接口,这里集成可以快速上线。VUE 有丰富的后台模板,可以更快的做出管理后台。第一步:清晰了解需求 因为已经很清楚自己要做的是驾校答题小程序,这里就不做多余的介绍了。 设计部分,由于这个项目比较小,没有专门的设计师。 尽量参考行业老大:驾校一点通与驾考宝典。第二步:数据库设计 数据库参考其他驾考类小程序,优先把核心字段建立出来,尽量考虑周全, 不够后面再补。 这里注意的是,Serverless架构,主要适合做一些中小型应用,如果应用数据量很大, 尽量提前考虑分表。1. 数据表 目前第一阶段暂时考虑一下表题目表题目类别表(题形)错题表收藏表成绩表用户表用户表,由于Bmob系统自带了,我就不建立了。2. 数据库文档 由于使用Bmob后端云数据库,默认每条记录都带id、创建时间与更新时间,此数据表说明不带这2个字段。 题目表(question)| 名称 | 类型 | 描述 | | --------- | ------ | ------------------------------------------------------------ | | title | string | 题目名称 | | choseList | Array | 选择列表 [{"item":"选选一"},{"item":"选选二","isChose":true}] | | type | int | 类型 1.单选 2.多选 3.判断 | | pic | string | 图片地址 | | video | string | 视频地址 | | help | string | 帮助描述 | | bSubjects | int | 所属科目 1.科目一 2.科目四 | | bModels | int | 所属车型 1.小车 2.货车 3.客车 4.摩托车 | | bType | string | 所属类别 关联类别表 | 设计好数据表之后,做准备工作拿到小程序的 AppID填写到Bmob控制台,应用设置-》应用配置把上面所有想好建立好的数据表添加到数据库小程序开发工具新建一个空白项目,复制BmobSDK,到utils目录引入SDK,初始化。引入SDK,初始化。文档在这里[https://bmob.github.io/hydrogen-js-sdk//?id\=初始化](https://bmob.github.io/hydrogen-js-sdk//?id\=初始化)看最终效果如下。效果一:所写代码➕预览 效果二:数据表变化 这样我们就实现了,整个小程序开发的第一步,自动注册登陆,获取openid。 第一节就到这里,下一步就是操作业务表。由于知乎对md支持不太好,大家如果觉得格式差,可以点击浏览器阅读模式。
2024年11月05日
0 阅读
0 评论
0 点赞
2024-07-07
Serverless_公众号邀请返利开发
公众号邀请返利开发,通过Faas,一个函数即可实现微信授权返回昵称头像。 APP里有个注册页面,希望互相转发微信,邀请返利。 为了方便传播,注册页面单独用H5页面实现。 为了提高邀请用户质量,提高邀请用户的有效性,我们强制要求微信里面打开才能注册。所以基于公众号开发。 为了快速开发,这里使用Bmob云Serverless 里的Faas服务与文件CDN存储服务。1.准备材料公众号Bmob云Serverless支持自己域名(需备案)2.设置公众号 一、设置AppSecret值 开发者ID(AppID)开发者密码(AppSecret)二、设置白名单 IP白名单 image.png三、设置授权域名 接口权限,登陆,找到网页授权域名四、设置调试微信开发者 开发者工具-》web开发者工具 【这个跟小程序一样的工具】,添加微信到开发者,最多可以绑定50个 image.png3.开发过程 一、注册Bmob账号 二、创建一个应用 image.png三、点击进入云函数 编写微信获取用户昵称代码 image.png四、新建云函数 云函数getOpenId 获取用户openid,拿到openid调用getUserInfo获取用户信息云函数function onRequest (request, response, modules) { var code = request.body.code ? request.body.code : '011jOWiN0vmFa42ynziN0B6bjN0jOWir' //获取数据库对象 var db = modules.oData; var functions = modules.oFunctions; //http请求方式: GET var appid = ''; var secret = ''; var url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + appid + '&secret=' + secret + '&code=' + code + '&grant_type=authorization_code'; //获取Http模块 var http = modules.oHttp; //发起Get请求 http(url, function (error, res, body) { if (!error && res.statusCode == 200) { //写入数据库 var resultObject = JSON.parse(body); //如果返回错误则打印 if (resultObject.errcode) { response.send(resultObject); } functions.run({ "name": "getUserInfo", "data": { "openid": resultObject.openid, "access_token": resultObject.access_token } }, function (err, data) { //回调函数 response.send(data); }); } }); } getUserInfo云函数function onRequest (request, response, modules) { var db = modules.oData; var openid = request.body.openid || 'ol2Ey0tePs0fdFdVRZKqzu50_83c'; var access_token = request.body.access_token || 'xxxx'; getUserInfoMp(openid, access_token); function getUserInfoMp (openid, access_token) { var http = modules.oHttp; http('https://api.weixin.qq.com/sns/userinfo?access_token=' + access_token + '&openid=' + openid + '&lang=zh_CN', function (error, res, body) { if (!error && res.statusCode == 200) { var at = JSON.parse(body); response.send(body); } response.send(body); }); } } 获取头像昵称开发完成 五.运行流程介绍 image.png用户打开一个url,这个url打开后会提示用户是否授权,同意后跳转到自己的网址,并带上code。(URL地址)[https://open.weixin.qq.com/connect/oauth2/authorize?appid\=wxbafdda995607cc\&redirect\_uri\=https://goldenage.xxxxx.com/\&response\_type\=code\&scope\=snsapi\_userinfo\&state\=STATEwechat\_redirect](https://open.weixin.qq.com/connect/oauth2/authorize?appid\=wxbafdda995607cc\&redirect\_uri\=https://goldenage.xxxxx.com/\&response\_type\=code\&scope\=snsapi\_userinfo\&state\=STATEwechat\_redirect)redirect\_uri参数关键:指定统一授权后打开的网址,接下来就1步,通过code拿到openid。上面函数getOpenId就可以拿到openid,如果需要昵称头像,可以调用第二个云函数getUserInfo[https://mp.weixin.qq.com/wiki?action\=doc\&id\=mp1421140842\&t\=0.356007856098852443](https://mp.weixin.qq.com/wiki?action\=doc\&id\=mp1421140842\&t\=0.356007856098852443))六.如何调用 image.pnghttps://cloud.bmob.cn/19b475f87c366db2/getOpenId 方法:post 参数:code: 微信code 返回: {"openid":"ol2Ey0tePs0fdFdVRZKqzu50_83c","nickname":"magic","sex":1,"language":"zh_CN","city":"广州","province":"广东","country":"中国","headimgurl":"http:\/\/thirdwx.qlogo.cn\/mmopen\/vi_32\/DYAIOgq83epySXbnQqg4MialjffKNKbxj42prvL2aIaIFbs3pj7svlT4gbQeQPbricZNBGYWfv1zcOo86fjwc99Q\/132","privilege":[]}}总结: 相比自己服务器开发优势,成本低,速度快。 基于Serverless,的Faas 只需要一个函数,即可实现用户openid功能。如果熟悉,整个微信开发不需要10分钟。这里有个用户点击授权的页面是HTML的,这个HTML我们可以用CDN云存储,把静态html页面保存到文件里面,支持绑定自己域名,让用户访问。 整个开发,不需要购买服务器,ip,环境,微信设置好,一个函数,暴露接口就可以实现。前端网页调用效果截图: image.png
2024年07月07日
10 阅读
0 评论
0 点赞
2024-02-09
Serverless_Faas_采集数据到小程序数据库
Serverless代表无服务器计算技术崛起,是微服务的一种表现形式。传统paas喜欢把FaaS(Function as a service) 就称之为Serverless,其实是不对的。单纯的Faas 能做的事是很有限的,一个微服务的应用没法完全依靠FaaS 运行起来, 必须得配合一些其他的服务,例如应用常见的文件、数据库、推送等服务。作者更认为 Faas+Baas\=Serverless ,Serverless架构是BaaS实现的进一步升级,让应用适用于更多的场景。目前国内推动Serverless 主要是阿里云、腾讯云、华为云等云厂商,大家看到国外 AWS Lamdba 做的比较成功,纷纷推出对应产品。虽然大家对Serverless 技术看法不一样,但大家对他的优点认同是一样的。免运维、低成本、弹性应对流量。最大的缺点与厂商平台绑定,这个是所有Serverless都没法避免的。即使厂商平台想不绑定也不行,所以选择信誉好、企业成立时间长的平台尤为重要。到今天(2018-05-23)为止我们看国内阿里云、腾讯云、华为云三大云厂商Serverless 已经逐渐成熟,但是还是没什么人用。什么原因? 我觉得是应用开发配套不够,要开发一个应用不是缺这个就是那个服务。目前这三家做的最好是阿里,他们的服务在不断完善中。这里我就拿阿里举例,其他2个厂商也差不多是这样。看下图 Faas 支持多功能首先推出Faas ,把他定位为 Serverless 解决应用开发中的问题。Faas 推出来后,不能只是输出个hello world! 或者说我这函数计算能力有多强吧这时推出函数图像处理服务,像裁剪、压缩、分发等文件处理, 这个是因为阿里本身有文件服务,带API,所以云函数整合API即可调用。顺便把公司内其他带API服务的产品,也整合,所以你看像敏感语音检测、对象存储(OSS)、转码、API网关等带API 调用服务也整合进来,这样Faas 就有了他的一些价值这样Faas 写的代码,可以操作一些服务。这些API服务,曾经我们都需要在自己应用或者自己服务端操作,如果能写到Faas ,可以一定程度减少工作量。大家可以看出,阿里这种他是从Faas发展出一些能力,慢慢增加,例如文件服务、网关服务、短信服务、云数据库服务、支付服务等等文件服务、网关服务、短信服务、云数据库服务、支付服务等等这些是什么? 这就是Baas 是为APP提供整个配套的Baas , 最终不管是否叫Baas平台,但从Faas 的发展,逐渐完成了把这些服务整合为一个Baas服务。 目前函数FaaS(Function as a service)服务大家都有了,Serverless是否实用,就看大家把应用后端开发相关服务,需要的BaaS(后端即服务:Backend as a Service)相关功能,整合的是否易用,如果做到了,那Serverless就达到了厂家所宣称的低成本开发 , 否则按照目前这三家企业Faas的技术使用成本,是超过我自己购买云主机用后端语言写我需要的业务的成本。这里我们看下Baas厂商是怎么做的 BaaS(后端即服务:Backend as a Service)+Faas(函数即服务 Function as a service)+SDK 形成一套应用服务。 有Baas+faas为什么还要一套SDK,没有SDK,一样是可以调用后端服务。这里举个例子。在小程序里面,同样是需要给一个客户发送一条验证码短信。不用SDK的代码:wx.request({ url: '[http://api.bmob.cn/sms](http://api.bmob.cn/sms)', //仅为示例,并非真实的接口地址 data: { phone: '1388888888' , }, header: { 'content-type': 'application/json' // 默认值 'appid':'1' }, success: function(res) { console.log("短信发送成功") } fail:function(res){ console.log("短信发送失败") } })使用SDK的代码Bmob.requestSmsCode(1388888888).then(function (res) { console.log('短信发送成功'); }) .catch(function (error) { console.log('短信发送失败'); });下面代码明显简单易读一些,更麻烦的是小程序是这样发起请求的,快应用是另外的,H5又是ajax的,他们虽然传的参数一样,但请求写法完全不一样。这时如果你是用SDK, 微信小程序、H5、支付宝小程序、快应用、游戏Cocos、混合App等平台都是这一份代码调用。没SDK需要关心平台变化,代码又得重新,大量节约开发周期。这就是SDK的价值,提升开发效率。也是 Serverless 必不可少的一环。大家都在讲Serverless效率更快,企业支付成本更低。成本我们先不谈,因为目前都是函数没运行不收费,虽然实用性还不够,前期有补贴,Faas相比docker实例暂时价格优势很明显。这个在未来还有待观察。我们讲Serverless 开发产品效率这个链接,是阿里Serverless的一个真实例子,10分钟构建微信小程序。[https://yq.aliyun.com/articles/435430?spm\=a2c4e.11153959.teamhomeleft.198.591748f2cvDStU](https://yq.aliyun.com/articles/435430?spm\=a2c4e.11153959.teamhomeleft.198.591748f2cvDStU)代码开源在[https://github.com/awesome-fc/wx-demo](https://github.com/awesome-fc/wx-demo)大家觉得可能吗,如果你能用Faas 10分钟对接好微信支付,已经是够快了。就这页代码[https://github.com/awesome-fc/wx-demo/blob/master/server/weixin/pay.py](https://github.com/awesome-fc/wx-demo/blob/master/server/weixin/pay.py) 10分钟能写出这一页代码,都是神一样的人物。何况还是构建整个微信小程序服务端。这个例子最大的作用是告诉大家,Faas 也可以做出你之前PHP、JSP、.net 等后端语言做出一样强的功能,并且我是无需自己去部署服务端运行环境, 弹性伸缩计算。 单纯从开发的角度上来说, 使用自己熟悉PHP或其他后端语言开发效率,目前肯定比Faas 开发效率高。什么情况会比自己写后端语言效率更高,这个我前面讲过,当整合整套Baas 服务后,个别功能服务,会比自己用后端语言写更高效率。这里我拿Bmob举个栗子:我要每小时采集一次IT之家接口数据,并且写入到数据库[https://apiquan.ithome.com/api/post?categoryid\=0\&type\=0\&orderTime\=1526981875455\&visistCount\=\&pageLength\=](https://apiquan.ithome.com/api/post?categoryid\=0\&type\=0\&orderTime\=1526981875455\&visistCount\=\&pageLength\=)Serverless Faas 服务代码:function onRequest(request, response, modules) { var http \= modules.oHttp; var url \= '[https://apiquan.ithome.com/api/post?categoryid\=0\&type\=0\&orderTime\=1526981875455\&visistCount\=\&pageLength\=](https://apiquan.ithome.com/api/post?categoryid\=0\&type\=0\&orderTime\=1526981875455\&visistCount\=\&pageLength\=)' http(url, function(error, res, body) { //结果转为对象类型 var results \=JSON.parse(body); var arr \= []; //循环更新数据 for (var i in results) { newdata \= { "method": "post", "path": "/1/classes/post", "body":results[i] }; arr.push(newdata) } //获取数组对象 var bat \= modules.oBatch; //批量操作 bat.exec({ "data": { "requests": arr } }, function (err, data) { //回调函数 response.end(data); return; }); response.end(JSON.stringify(results.length)); }); }Faas 在线写入这个代码,执行一次即可采集一次数据到数据库。当然这个方法也是支持链接访问,链接地址: curl -X GET [http://cloud.bmob.cn/8b46e79dd49843f6/caiji](http://cloud.bmob.cn/8b46e79dd49843f6/caiji) 或者SDK加密调用。定时任务也是完全没问题的 更多这篇教程,可以看这里[https://www.jianshu.com/p/e6ef296261c8](https://www.jianshu.com/p/e6ef296261c8) 。如果熟悉nodejs,几分钟写出来,绝对不成问题。虽然阿里不会直接面对中小团队去做SDK,或者小程序、快应用的Faas功能封装,但其他后端方案,跟随着时间推移,相信阿里的Faas 会整个更多后端开发的服务功能,形成好用一套Serverless 解决方案,目前能调用的服务有限,操作有些复杂,大家可以去尝尝鲜。
2024年02月09日
7 阅读
0 评论
0 点赞
2023-11-14
Serverless架构小程序云实现原理分析
【Serverless架构】小程序云实现原理分析 小程序基于最新的Serverless架构,无论官方称之为什么,特征都属于Baas或者Serverless服务。整个小程序云服务,包含了,客户端嵌入SDK,封装云函数上传命令,服务端主要在Faas云函数内部封装了openid、文件存储请求全局系统对象,方便大家请求微信与腾讯云接口, 云函数数据库操作,沿用了客户端SDK,由于JavaScript跨平台特性,js代码可以直接放到node里面执行,云函数里的wx-server-sdk,其实就是客户端的SDK。 客户端wx.cloud, 相当于微信开发工具写入了全局变量wx.cloud\=wx-server-sdk库。我们从客户端到服务端的顺序分析客户端-》中间层-》数据库1.客户端SDK 目前客户端大家是不需要自己引入的,直接写入开发工具对象,只要微信基础库版本到达 2.2.3 或以上的就可以使用其实还有个服务端SDK,在云函数。看不见的wx.cloud对象,cloud对象,是一个js SDK,通过jssdk赋值给全局对象, 由于云函数的数据库操作方法写法与客户端一致,我们可以猜测,客户端SDK,与云函数的wx-server-sdk库 是同一个库。我们对比下2者的代码客户端 (小程序开发工具)db.collection('todos').doc('<some-todo-id>').get().then(res => { // res.data 包含该记录的数据 console.log(res.data) }) 服务端 (Faas)const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { try { return await db.collection('todos').doc('<some-todo-id>').get() } catch(e) { console.error(e) } } 核心代码客户端 db.collection('todos').doc('<some-todo-id>').get() 服务端 return await db.collection('todos').doc('<some-todo-id>').get() 可以看到2者操作是相同的,只不过服务端用了es7的await异步对象,可以return 拿到结果集合。而客户端使用了 Promise风格,如果反编译微信开发工具,在wx.cloud对象里面,一定是可以找到大量与wx-server-sdk一模一样的代码。2. 中间层封装 当我们开发登陆的时候,第一步需要拿到openid,客户端会请求云函数,云函数请求微信接口,最终返回openid,可我们看到云函数里面并不需要我们去请求微信的接口,而是直接event.userInfo.openId返回了openid。看代码exports.main = (event, context) => { console.log(event) console.log(context) // 可执行其他自定义逻辑 // console.log 的内容可以在云开发云函数调用日志查看 return { openid: event.userInfo.openId, } } 这里帮我们省略了很多代码,原本的流程是需要通过客户端code换区openid接口地址:https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code 抓包看下,测试出来,只要访问这个地址,即可访问openidhttps://servicewechat.com/wxa-qbase/qbasecheckresult?event_id=HKnup_IMP8wWCsHwx0UyYsJMU0YPQm7u8eERg7Ll0wGB9CMSBtppMnu4P6Ytr6DFG2Vl_EGZS3nyEBw15OPCERLEi4Ok0HWC6g 返回结果{ "base_resp": { "ret": 0 }, "status": 1, "content": "{\"openid\":\"oWPQH0WVoCkpiw3ErLYAIVnudjfA\"}", "service_errcode": 0, "service_errmsg": "", "func_req_id": "0f9c7a3f-b63c-11e8-b8ac-525400e8849e" }可以看到, 只要带一个参数event\_id,就可以拿到openid, 云函数return的内容,会在返回的content字段表现。在请求从客户端,到达服务器之后,服务器获取到openid,记得这个openid比较特殊里有个情况是, 任何请求到服务器,都会获取openid, 第一次会从微信接口获取,写入到内存,第二次会直接从内存取。 这里用redis的情况可能性比较大。第二次请求直接取redis 值就可以了。 取到后写入event.userInfo对象。所以在任何云函数里,只要event.userInfo.openId,你都可以拿到openid。授权后,event.userInfo还包含头像等其他信息。其他云函数的操作,都封装在wx-server-sdk 这个代码,大家可以在每个云函数的依赖node\_modules目录找到, 大家开发时遇到错误,也不要急,这里有个看错误技巧。以 6 开始的是由微信服务器侧产生的错误码 以 5 开始的是由腾讯云侧产生的错误码 以 4 开始的是本地 SDK 产生的错误3.数据库 文档很多地方使用了,文档,集合概念,操作数据库传入参数也是mongodb的风格,很明显的使用了非关系类型,Mongodb数据库。 每个应用一个Collection。 云数据相当于Mongodb UI控制台。连显示结构也没改。相比之前的Wafer套件,可以说这次是一个全新的解决思路。跟Bmob一样实现一个人全栈小程序开发,唯一效率比Bmob低的是,这个人必须掌握nodejs,Bmob的服务如果做小程序,相比小程序云,大部分需求是不需要掌握nodejs。总结: 整套可以理解为mongodb+Faas的结合,封装了数据存储操作SDK。 与阿里的Serverless服务一样,以Faas为核心, Faas目前内置只封装了openid,去掉了定时任务,网关等功能,任何功能自己通过faas去实现,但只限定小程序内调用。相比阿里的Serverless 更贴地气,因为这次有了客户端SDK,再加云函数SDK,让Serverless找了到落地的可能。最后脑洞问题:能否自己用阿里云Serverless 搭建一个小程序云?答案是可以的mongodb+Faas目前阿里的都有,并且目前阿里Faas功能更强大,唯一差个小程序客户端操作数据库的SDK。未来有机会,可以出个教程如何使用Faas实现一套自己的小程序-云
2023年11月14日
12 阅读
0 评论
0 点赞
2022-02-11
Serverless_公众号开发
什么是微信开发第一步? 微信公众平台开发第一步详解如果有人问你,微信体系下,开放平台、公众号、小程序开发第一步是做什么?我的回答是获取微信access_token。access\_token是公众号的全局唯一接口调用凭据, 没有凭据后面的其他接口,都没法调用。公众号调用各接口时都需使用access\_token。开发者需要进行妥善保存。access\_token的存储至少要保留512个字符空间。access\_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access\_token失效。官方文档地址: [https://mp.weixin.qq.com/wiki?t\=resource/res\_main\&id\=mp1421140183](https://mp.weixin.qq.com/wiki?t\=resource/res\_main\&id\=mp1421140183)接口地址https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 参数说明参数是否必须说明grant\_type是获取access\_token填写client\_credentialappid是第三方用户唯一凭证secret是第三方用户唯一凭证密钥,即appsecret返回说明正常情况下,微信会返回下述JSON数据包给公众号:{"access_token":"ACCESS_TOKEN","expires_in":7200}调试工具 微信官方为了大家开发公众号时,提供大家的开发效率,特地给开发者上线了一套调试工具[https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t\=index\&type\=](https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t\=index\&type\=)基础支持\&form\=获取access\_token接口%20/token功能实现 这个功能,只需要调用这个接口,然后返回access\_token,我们就不搭建Liunx,PHP,node等环境,直接用当今流行的Serverless 相关平台的Faas(云函数)功能。 这里使用的是Bmob后端云,当然你用阿里、腾讯、华为等等厂商支持Faas(云函数) 功能的都可以,只是语法稍微有点不同,这些开发小程序、公众号都可以。 比自己搭建服务器要快很多。前期准备 第一步:准备配置信息 登陆微信平台[https://mp.weixin.qq.com/](https://mp.weixin.qq.com/)进入开发-》基本配置 image.png拿到开发者ID(AppID)与开发者密码(AppSecret),开发请求时需要用到。第二步:编写云函数 首先你有个Bmob后端应用,点击进入云函数。选择模板创建,当然你也可以自己变。 云函数自己编写代码,我们有一点javascript基础,或者java基础都可以。这里介绍下Nodejs文档地址:[http://doc.bmob.cn/cloud\_function/web/develop\_doc/http\_1](http://doc.bmob.cn/cloud\_function/web/develop\_doc/http\_1)HTTP请求对象 oHttp对象可以模拟实现get、post、put、delete等各种HTTP请求信息,让你在云端实现诸如数据采集、OAuth授权登录等功能。Bmob的HTTP请求模块采用Nodejs提供的request模块,这里提供简单的Get和Post的操作实例。更多的功能详细参考:https://npmjs.org/package/request/** *发起Get请求 *///获取Http模块var http = modules.oHttp;//发起Get请求http('https://www.bmob.cn', function (error, res, body) { response.send(body); }); - /** *发起Post请求 *///获取Http模块var http = modules.oHttp; var options = { "url": 'https://api.bmob.cn/1/classes/GameScore', "headers": { 'X-Bmob-Application-Id': 'Your Application ID', 'X-Bmob-REST-API-Key': 'Your REST API Key', 'Content-Type': 'application/json' }, "body":JSON.stringify({"score":1337,"playerName":"Sean Plott"}) }; http.post(options, function(error, res, body) { response.send(body); }); 微信access\_token,这里只需要发起一个get请求,地址是这样。[https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t\=index\&type\=](https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t\=index\&type\=)基础支持\&form\=获取access\_token接口%20/token/** *发起Get请求 *///获取Http模块var http = modules.oHttp; var url ="https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t=index&type=基础支持&form=获取access_token接口%20/token";//发起Get请求http(url, function (error, res, body) { response.send(body); }); 不到10行代码,我们就可以拿到微信开发必备的access\_token,access\_token微信是有次数限制的,当然不能这么每次获取使用, 这样只要请求次数多,每月必定超出微信给的次数。 微信官方说:access\_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access\_token失效, 那我们就给这个函数的结果保存到数据库,做个定时任务2小时执行一次。然后需要时读取数据库,这样就不会担心超了。第三步:access\_token保存数据库 我们在控制台建一个WeiXin\_access\_token表,增加access\_token字段,里面随便增加一条记录,拿到id,用来更新这条记录。当然你也可以把每次获取的access\_token插入到这个表,需要的时候获取到最新的一条。云函数数据表操作文档:[http://doc.bmob.cn/cloud\_function/web/develop\_doc/\_9](http://doc.bmob.cn/cloud\_function/web/develop\_doc/\_9)function onRequest (request, response, modules) { //获取数据库对象 var db = modules.oData; //这里放到表里的ID var objectId = 'NJEi333B'; //http请求方式: GET var appid = 'wxd1b8c236059cd569'; var secret = 'c18a43c67c81400980624c03c5f11a34'; var url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + appid + '&secret=' + secret; //获取Http模块 var http = modules.oHttp; //发起Get请求 http(url, function (error, res, body) { if (!error && res.statusCode == 200) { //写入数据库 var resultObject = JSON.parse(body); //如果返回错误则打印 if (resultObject.errcode) { response.send(resultObject); } //更新到数据表 db.update({ "table": "WeiXin_access_token", "objectId": objectId, "data": { "access_token": resultObject.access_token } }, function (err, data) { response.send("success" + data); }); } }); //获取微信access_token END } 第四步:读取access\_token暴露给其他平台调用新建个空白云函数,里面编写一下代码function onRequest(request, response, modules) {//数据库对象 var db = modules.oData; //查询一条数据 db.findOne({ "table":"WeiXin_access_token", "objectId":"NJEi333B" },function(err,data){ //JSON打印给客户端 response.send(data); }); } 这里是代码的执行结果,需要预览,可以打开一下链接。http://cloud.bmob.cn/3fbee3a417249ddf/token 一样不到10行代码,即可暴露access\_token给其他平台调用。总计不到20行代码,不需要10分钟,就可以实现微信整个access\_token的维护,与暴露给其他平台使用。最后还有一个关键问题, 2小时自动刷新access\_token。第四步:自动刷新access\_token Bmob平台云函数支持liunx下面的crontab语法定时任务,当然国内其他公司的云函数也是支持定时任务的,具体看开发文档。[http://doc.bmob.cn/cloud\_function/web/timing\_tasks/](http://doc.bmob.cn/cloud\_function/web/timing\_tasks/) image.png总结: 我们可以看到Serverless的Faas 开发微应用,开发效率比传统自己购买云主机,云数据库。高出很多倍。以至于国内这2年,阿里、腾讯、华为等云厂商都推出了自己的Faas 服务。大家都可以去体验一下,上线速度是否比自己购买的云主机更快,你只需要关系业务代码,不再需要去了解框架、运维、底层相关技术。
2022年02月11日
9 阅读
0 评论
0 点赞
1
2