微信小程序> 微信小程序前后端交互流程

微信小程序前后端交互流程

浏览量:1943 时间: 来源:agax0312

(近期有时间,也饿,接点小型微信小程序私活填肚子)

建议封装自己的HTTP请求,使用方便并且多少可以减少代码量:

function HttpRequst(loading, url, sessionChoose, sessionId, params, method, ask, callBack) {  if (loading == true) {    wx.showToast({      title: '数据加载中',      icon: 'loading'    })  }  var paramSession = [{},    {      'content-type': 'application/json',      'Cookie': 'JSESSIONID=' + sessionId    },    {      'content-type': 'application/json'    },    {      'content-type': 'application/x-www-form-urlencoded',      'Cookie': 'JSESSIONID=' + sessionId    },    {      'content-type': 'application/x-www-form-urlencoded;charset=utf-8',      'Cookie': 'JSESSIONID=' + sessionId    }  ]    wx.request({      url: baseUrl + url,      data: params,      dataType: "json",      header: paramSession[sessionChoose],      method: method,      success: function(res) {        console.log(res);        console.log(res.data.statusCode);        if (loading == true) {          wx.hideToast();         }        if (res.data.needLogin == true) {          wxLogin2(loading, callBack);//在此做自己的wx.login        }        if (res.data.needLogin != true) {          callBack(res.data);        }      },      complete: function() {        if (loading == true) {          wx.hideToast();         }      }    })}

我们可以在能够使用 HttpRequst 的地方很简单的发出请求,并预定callback函数:

util.HttpRequst(true, "house/report.do", 4, wx.getStorageSync("sessionId"), params, "POST", false, _this.sthAfterReport);

利用微信提供的API—getSession,我们可以在小程序端对session过期做相应处理,这可以解决用户注销并切换用户登录的时候,系统需要更新用户的问题:

在app.js-onLaunch()方法中:wx.checkSession({      success: function (res) {        console.log("处于登录态");        console.log(wx.getStorageSync('sessionId'));      },      fail: function (res) {        wx.removeStorageSync('sessionId');//在此可以在用户切换登录的时候,将保存在缓存中的session信息删除.        console.log("处于非登录态");      }    })

在后端我们可以对请求进行拦截,针对不同的框架有不同的实现方法,这里以后端请求filter为例:

/**当小程序端接收到needLogin == true的标记时,触发wx.login()方法,在后端login方法中,将user信息加入session中并将sessionId传回小程序端保存,可以通过wx.setStorageSync()方法保存到微信端缓存当中.  *若session中存在user信息,则可以继续进行请求的操作./User user = (User)req.getSession().getAttribute("user");if(null == user){res.put("needLogin", true);return res;}//后端login.map.put("sessionId", req.getSession().getId());//前端login.wx.setStorageSync('sessionId', res.sessionId);
大致流程汇总说明:新用户初次登录,小程序端----发送https-request----->服务端.filter获取user为空,返回needLogin为true的标识.小程序端调用wx.login().服务端将session信息放到response.小程序端将session信息保存到缓存.小程序端之后的request调用,都在request里附加session信息.服务端根据session信息取出user对象,进行后续操作.

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎