微信小程序request封装

发布时间:2025-03-24 点击:22
微信小程序request封装
request的做小程序是必不可少的,所有后端网络请求都要用到request,虽然微信的request相对来说已经很简洁,但对http status code的判断,处理异常都不是很方便
首先新建一个request.js
class request {
constructor() {
this._header = {'content-type': 'application/x-www-form-urlencoded'}
}
/**
* 设置统一的异常处理
*/
seterrorhandler(handler) {
this._errorhandler = handler;
}
/**
* get类型的网络请求
*/
getrequest(url, data, header = this._header) {
return this.requestall(url, data, header, 'get')
}
/**
* delete类型的网络请求
*/
deleterequest(url, data, header = this._header) {
return this.requestall(url, data, header, 'delete')
}
/**
* put类型的网络请求
*/
putrequest(url, data, header = this._header) {
return this.requestall(url, data, header, 'put')
}
/**
* post类型的网络请求
*/
postrequest(url, data, header = this._header) {
return this.requestall(url, data, header, 'post')
}
/**
* 网络请求
*/
requestall(url, data, header, method) {
return new promise((resolve, reject) => {
wx.request({
url: url,
data: data,
header: header,
method: method,
success: (res => {
if (res.statuscode === 200) {
//200: 服务端业务处理正常结束
resolve(res)
//请求返回401 跳转登陆
if(res.data.code==401){
wx.relaunch({
url: '/pages/login/index',
})
}
} else {
//其它错误,提示用户错误信息
if (this._errorhandler != null) {
//如果有统一的异常处理,就先调用统一异常处理函数对异常进行处理
this._errorhandler(res)
}
reject(res)
}
}),
fail: (res => {
if (this._errorhandler != null) {
this._errorhandler(res)
}
reject(res)
})
})
})
}
}
export default request
新建getapi.js
import request from './request.js'
import utilmd5 from './md5.js'
class getapi{
constructor() {
this._baseurl = 'https:xxxx'
this._defaultheader = {
'data-tupe': 'application/json'
}
this._request = new request
this._request.seterrorhandler(this.errorhander)
this._key = 'cdweb_net'
}
/**
* timestamp
*/
timestamp() {
//获取当前时间戳
let timestamp = date.parse(new date());
timestamp = timestamp / 1000;
//获取当前时间
let n = timestamp * 1000;
let date = new date(n);
let y = date.getfullyear(); //年
let m = (date.getmonth() + 1 < 10 ? '0' + (date.getmonth() + 1) : date.getmonth() + 1); //月
let d = date.getdate() < 10 ? '0' + date.getdate() : date.getdate(); //日
let h = date.gethours(); //时
let m = date.getminutes(); //分
let s = date.getseconds(); //秒
return y.tostring() + m + d + h + m + s;
}
/**
* 公共参数
*/
conndate(data) {
let timestamp = this.timestamp();
let conn = {
timestamp: timestamp,
token: utilmd5.hexmd5(timestamp + this._key),
}
return object.assign(conn, data);
}
/**
* 统一的异常处理方法
*/
errorhander(res) {
console.error(res)
}
/**
* 验证token
*/
gettoken(session3rd) {
let url = user/xxx
let data = {
device_token: 'wechat',
session3rd: session3rd
}
return this._request.getrequest(this._baseurl + url, this.conndate(data)).then(res => res.data)
}
/**
* 获取项目
*/
getproject(session3rd, userid, cpage,k='') {
let url = project/xx
let data = {
session3rd: session3rd,
userid: userid,
cpage: cpage,
k:k
}
return this._request.getrequest(this._baseurl + url, this.conndate(data)).then(res => res.data)
}
}
export default getapi
最后在app。js实例化
import getapi from ‘./apis/request.js’
getapi:new getapi()
在pages里使用
const app = getapp();
getdatalist() {
app.getapi.getcourselist(this.data.xx)
.then(res => {
this.setdata({
list: list
})
})
.catch(res => {
//you code
})
},

南开网站建设中设计师的注意事项
香港云服务器怎么样?香港云服务器哪家便宜?
网络营销盛行,传统营销会被取代吗?
企业网站建设中可能会遇到哪些特殊情况又该如何解决?
在网络广告众多的今天,如何做好软文广告?如何植入广告?
在新媒体运营时代,还有必要建设企业官网吗?
网站添加外链有哪些技巧
网站优化一定要懂得思考