微信小程序-请求、接口拦截
请求拦截request.js
下面分享一下微信小程序的接口拦截
//HTTPS_HOST 接口地址。
const HTTPS_HOST = "https://www.baidu.com/wechat"
function dealResult(res, resolve, reject) {
console.log(\'接口response:\',res);
if (res.errMsg == \'openDocument:ok\') {
resolve(res);
} else if (res.data.status !== 400) {
resolve(res.data);
} else {
wx.showToast({
title: res.data.message,
icon: \'none\',
duration: 2000
})
reject(res.data);
}
}
/**
* @param {Object} options 请求配置对象 参考wx实际接口文档
* @param {String} type 接口类型 默认request, downloadFile=下载文件预览,uploadFile=上传文件
* */
function request(options, type) {
let params = options.data || {};
return new Promise((resolve, reject) => {
console.log(token)
// 通用接口拦截
if (typeof type == \'undefined\') {
wx.request({
header: {
\'content-type\': \'application/json\',
\'appSign\': \'wxapp\'
},
...options,
data: params,
url: HTTPS_HOST + options.url,
success(res) {
dealResult(res, resolve, reject);
},
fail(err) {
wx.hideLoading()
// 错误处理
wx.showModal({
title: \'提示\',
showCancel: false,
content: \'请求超时,请检查网络!\',
success: function () {
}
})
// reject(err);
}
});
} else if (typeof type != \'undefined\' && type == \'downloadFile\') {
// 下载预览
wx.downloadFile({
...options,
url: HTTPS_HOST + options.url,
header: {
\'appSign\': \'wxapp\'
},
success(res) {
const filePath = res.tempFilePath;
wx.openDocument({
filePath: filePath,
fileType: \'pdf\',
success: function (res) {
console.log(\'打开文档成功\');
dealResult(res, resolve, reject);
},
fail(err) {
console.log(\'打开文档失败:\', err)
}
})
},
fail(err) {
reject(err);
}
})
} else if (typeof type != \'undefined\' && type == \'uploadFile\') {
wx.uploadFile({
...options,
url: HTTPS_HOST + options.url,
header: {
\'appSign\': \'wxapp\'
},
success(res) {
const data = res.data;
dealResult(res, resolve, reject);
},
fail(err) {
console.log(\'err:\',err)
reject(err);
},
complete(err){
console.log(\'comp:\',err)
reject(err);
}
})
}
})
}
export default request;
api接口
api.js
import request from \'../utils/request.js\'
// 普通接口
export function list(data) {
return request({
url: \'/wxList/list\',
method: \'post\',
data
})
}
// 上传接口
export function uploadFile(data) {
return request({
url: \'/file/uploadFile\',
filePath: data.filePath,
name: \'file\',
formData: {
\'name\': data.name
}
}, \'uploadFile\')
}
// 下载接口
export function downloadFile(id) {
return request({
url: \'/file/downloadFile\' + \'?id=\' + id,
method: \'get\',
}, \'downloadFile\')
}
如何调用
xxx.js
import {list} from \'../../api/api.js\'
list(){
list({pageNum:1,size:10,status:0}).then(res=>{
console.log(res)
}).catch(err=>{
console.log(err)
})
}