刚开始接触小程序时,都会通过微信开发者工具建立一个快速启动模版,点击获取头像昵称,会获取自己的相关信息,如下图。
这里的信息是如何获取的?打开快速启动模版的源码可以看到wx.getUserInfo
这个方法:
wx.getUserInfo({ success: res => { app.globalData.userInfo = res.userInfo this.setData({ userInfo: res.userInfo, hasUserInfo: true }) }})复制代码
response
内容:
综上,我们通过wx.getUserInfo
方法,访问微信服务器拿到数据信息。
***********************************
ps:
附:
在使用wx.getUserInfo
wx.getUserInfo()
调用这个方法获取用户信息时,之前会在小程序上自动弹出授权窗口,但是现在改了,这个方法依然可以使用,但是不会自动弹出授权窗口了。
就是说, 以前没有授权的情况下,调用方法,自动弹出授权窗口,授权后拿到用户信息,而现在,调用时会先给你提示,点击继续使用直接报错!!
如何解决呢?
在页面上加上授权按钮 <button open-type="getUserInfo">授权</button>
,点击授权弹出授权弹窗,确认授权后在调用wx.getUserInfo()
,返回正常。
***********************************
接正文:
类似 wx.getUserInfo
,wx.getSetting
都是封装好的方法直接调用微信服务器,而小程序环境内一般的业务请求要如何发送呢?
通过
wx.request
wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '', y: '' }, header: { 'content-type': 'application/json' // 默认值 }, success: function(res) { console.log(res.data) }})复制代码
那么现在问题来了!!!
只有 wx.request
能发送请求有啥用啊,任何一个业务流程都需要有 会话 来保证流程完整的一步一步的走下去,小程序中如何保持会话 ??? --(用cookie?呵呵,小程序不支持);
***********************************
ps:
当然, 现在有一些小程序插件是可以让请求带上cookie
的, 感兴趣的同学可以研究下:
***********************************
接正文:
在网页开发中,一个正常的业务流程:
- 登陆产生
sessionid
放在cookie
中。 - 后续请求都会带上
sessionid
保持会话。
而小程序是不支持cookie
的,下面就来看下在不支持cookie
的情况下,要如何保持会话:
首先第一步肯定是要先登录啦!!
此文对上图有一个不错的解释:
下面通过具体代码来看下,何如实现登陆,及后续请求带上登陆信息保持会话。
***********************************
ps:
下面的服务端代码都是基于腾讯云实验室提供的,可以作为参考。
里面有两种选择:
使用第二种方式同学,这里有一篇我之前搭建环境踩坑总结可以参考:
***********************************
接正文:
下载:
里面提供了:登陆,请求,会话。。。等等方法
├── wafer-client-sdk| ├── lib| | ├── constants.js| | ├── login.js| | ├── request.js| | ├── session.js| | ├── tunnel.js| | ├── utils.js| | └── wxTunnel.js└── ... 复制代码
login.js
中:
登陆以后,在发起业务请求时:
上述为登陆客户端的实现,看下服务端的实现:
通过上述,对小程序与服务器通信有了一个大概的认识,在开发的过程中有一个新问题!!
-
上述代码中, 每次发送请求都需要通过登录鉴权的中间件。这个跟业务逻辑好像根本无关。
-
如果存在类似客服通信的信道需求,也需要写在业务服务器上。
上述两点会不会让业务服务器变的非常混乱。(会!!)
所以基于这两点,腾讯云推出了 wafer
解决方案。
把会话服务,信道服务单独抽出作为一层,使业务逻辑清晰很多。
上述的会话服务器,信道服务器如果个人自己搭建的话,成本很高。
-
首先需要有三台服务器: 业务服务器,会话服务器,信道服务器。
-
每台服务器都需要单独的运维部署,耗时耗力。
自己尝试搭建过,感觉太复杂了,最终还是放下了。。。。。。有兴趣的同学可以试试,下面是官方参考文档:
因为wafer
刚出来的时候是针对企业用户的,所以搭建成本是相对可以接受的,后来wafer2
的诞生,对个人用户放开,考虑到个人的开发成本,贴心的推出了牛X的:
通过开发者工具的腾讯云模块实现自动部署:
下面为一站式部署的一个官方DEMO
(教程详细这里就不再多赘述了):
总结:
通过此篇大致的了解到小程序云与服务器独有的通信机制,结合文中的一些官方DEMO
, 可以很好的掌握其中的原理。
==========================================================================================
后话:
为了让小程序开发者更加方便快捷的进行开发,又推出了 小程序云
,宗旨是:让云能力将会成为小程序的基础能力。
- 下面是相关文档介绍: