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

时间:2024-11-21 16:32:26

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

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

function HttpRequst(loading, url, sessionChoose, sessionId, params, method, ask, callBack) {
  if (loading == true) {
    ({
      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
    }
  ]
    ({
      url: baseUrl + url,
      data: params,
      dataType: "json",
      header: paramSession[sessionChoose],
      method: method,
      success: function(res) {
        (res);
        ();
        if (loading == true) {
          (); 
        }
        if ( == true) {
          wxLogin2(loading, callBack);//在此做自己的
        }
        if ( != true) {
          callBack();
        }
      },
      complete: function() {
        if (loading == true) {
          (); 
        }
      }
    })
}

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

(true, "house/", 4, ("sessionId"), params, "POST", false, _this.sthAfterReport);

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

在-onLaunch()方法中:

({
      success: function (res) {
        ("处于登录态");
        (('sessionId'));
      },
      fail: function (res) {
        ('sessionId');//在此可以在用户切换登录的时候,将保存在缓存中的session信息删除.
        ("处于非登录态");
      }
    })

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

/*
*当小程序端接收到needLogin == true的标记时,触发()方法,在后端login方法中,将user信息加入session中并将sessionId传回小程序端保存,可以通过()方法保存到微信端缓存当中.  
*若session中存在user信息,则可以继续进行请求的操作.
/
User user = (User)().getAttribute("user");
			if(null == user){
				("needLogin", true);
				return res;
			}


//后端login.
("sessionId", ().getId());

//前端login.
('sessionId', );
大致流程汇总说明:
新用户初次登录,小程序端----发送https-request----->服务端.
filter获取user为空,返回needLogin为true的标识.
小程序端调用().
服务端将session信息放到response.
小程序端将session信息保存到缓存.
小程序端之后的request调用,都在request里附加session信息.
服务端根据session信息取出user对象,进行后续操作.