支持request 普通网络请求。
支持套接字通讯 WebSocket
支持上传文件 uploadFile
支持下载文件 downloadFilenode
只要成功之后就会有success回调。nginx
小程序必须使用https
必须通过icp备案git
微信小程序有本身的本地缓存算法
小程序登陆来一张时序图,此时序图书来自于微信官方。docker
大概也能看懂一点,整个过程须要通过开发者服务器。
其中code为临时登陆凭证,
先调用 wx.login(Object object) 获取临时登陆凭证,及code,而后wx.request()方法将登陆凭证发送到开发者服务器,开发者服务器获得code之后经过appiid和appsecret以及code将信息发送到微信接口服务,而后微信接口服务器将信息返回session_key + openid 等信息,接着开发者服务器进行自定义登陆态,即将登陆态将openid,session_key进行关联,而后向小程序防返回自定义登陆态。
接着将自定义登陆态存入storage。
之后再次发送request的时候,将会携带开发者定义的自定义登陆态,而后将自定义登陆态查询openid和session_key 在开发者服务器上进行查询,接着 返回业务数据npm
整个过程相似于鉴权的过程。json
其中session_key 是对用户数据进行加密签名的密钥,即对用户数据进行加密用的。小程序
unionID为用来区分用户的惟一性用的。即同一个应用对于同一个微信开发平台下的不一样应用unioID为相同的。后端
部分接口须要通过用户受权才能调用,若是用户受权,将会调用该接口,若是用户拒绝受权,将会调用fail的接口回调。微信小程序
上面图是来自于微信官方的流程图
整个关键在于session_key 经过session_key对数据进行签名和加密,而后整个传送到开发者服务器,在开发者服务器上进行解密操做,即便用session_key进行解密。整个过程全程加密,确保了信息在中途不能被截获,不能被伪造,即确保了信息的安全。
微信会对明文传输的数据进行签名,开发真根据这些对明文的数据进行签名校验,防止数据被篡改。
签名算法 sha1 一种哈希签名算法,目前已经被证明能够被碰撞。 即被google证明两分内容不一样可是SHA-1会彻底相同的碰撞实验 https://zh.wikipedia.org/zh-sg/SHA-1
小程序须要使用网络通讯,从后台拉取信息。
后台服务器使用node.js 外加nginx进行转发,在node.js上为了方便起见,直接不配置https证书,在nginx上配置https证书,为了防止出现意外,全部的node.js暴露出的端口都在内网,只暴露nginx的接口
以下
node.js -> nginx -> 微信小程序
进行npm安装koa框架,并暴露出端口
因为比较懒,就不用docker了,直接上服务器上npm,在说,自己也就一台服务器,用不上docker,服务器配置还有点低,目前有三台,一台腾讯云,配置blog,一台灯塔国的,配置ss服务,一台阿里云的供本身折腾,
解析出域名api.iming.info 用于进行api
nginx 添加网站,并添加ssl证书
添加http://127.0.0.1:1937 进行反向代理
接着pm2管理器,添加pm2进行管理
按照规范,是应该使用docker进行的,而后git上传,在服务器端用git直接拉下来。这里呢,只有一台机器,直接省事,整个过程应该是全程自动化的,╮(╯▽╰)╭
进入目录,进行npm
[root@xiao api.iming.info]# npm install --save koa npm WARN saveError ENOENT: no such file or directory, open '/www/wwwroot/api.iming.info/package.json' npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN enoent ENOENT: no such file or directory, open '/www/wwwroot/api.iming.info/package.json' npm WARN api.iming.info No description npm WARN api.iming.info No repository field. npm WARN api.iming.info No README data npm WARN api.iming.info No license field. + koa@2.5.3 added 40 packages in 58.543s [root@xiao api.iming.info]#
在目录下新建app.js
const koa = require('koa'); const app = new koa(); const main = ctx => { ctx.response.body = "hello world"; }; app.use(main); app.listen(1937);
接着用pm2管理器,启动app.js
接着访问 https://api.iming.info/ 出现hello world的json格式的数据即完成最基础的node.js服务器搭建
进入后台,添加api.iming.info
好吧,是省事了,直接将上传域名,下载域名所有添加为同一个域名了,事实上仍是能够再分开的,在分开为上传的一个域名,下载的一个域名,只须要添加request域名便可。 下一篇,继续进行先后端通讯