一般wx.request 这个用起来好麻烦
看了很多的封装都不是很符合我的要求,所以我决定用我自己的方法封装一下,请高手指正
文件名http.js
import {env} from '../dev';
const baseURL = "https://xxxxxx/";
const getReq = function(uri,data={},config={},load = true) {
if(load){
wx.showloading({
title:'载入中',
mask:true
})
}
let headers = {
env //当前请求的是开发环境的api还是生产环境的api
}
if(config.headers){
headers = Object.assign({},headers,{...config.headers})//如果有其他的头部比如第三方session 也需要加进去
}
wx.request({
url: baseURL + `${uri}`,
method: "GET",
header: headers,
success: res => {
if (res.statusCode === 404 || res.statusCode === 500 || res.statusCode === 400) {
reject({
status: res.statusCode,
});
if(load) {
wx.showToast({
title: '请求失败',
icon: 'none'
});
}
} else {
resolve({
status: res.statusCode,
data: res.data
});
}
},
fail: res => {
if(load) {
wx.showToast({
title: '未知错误',
icon: 'none'
});
}
console.log(res);
reject({
status: 500
})
},
complete: res => {
wx.hideLoading();
}
})
}
...后面还有putReq, postReq这些就不写了,都大同小异
然后
const $http = {
"delete": deleteReq,
"put": putReq,
"get": getReq,
"post": postReq
};
module.exports = $http;
用法
//pages/users.js
import $http from '../utils/http';
$http.get('/user')
.then(res=>{
this.setData({
userList:res.data.users
})
})
.catch(err=>{
//who cares?
})
个人觉得,封装是一种思路,不同的人有不同的封装方法,只要适合自己就好,
自制封装。。。请大家参考