1.目录结构
在根目录下创建一个文档,例如创建一个http文档,在文档内写入三个js文件,分别为api.js文件、fetch.js文件以及http.js文件
在根目录下创建一个env目录,用js配置并导出多个开发环境
module.exports={
//开发变量
Dev:{
"BaseUrl":"https://www.develep.com"
},
//测试环境
Test:{
"BaseUrl":"https://www.test.com"
},
//生产环境
Prod:{
"BaseUrl":"https://api.douban.com"
}
}
在fetch.js中用promise对wx.request()进行封装
//module.exports=(url,method,data)=>{
let p=new Promise ((resolve,reject)=>{
wx.request({
url:url,
method:method,
data:Object.assign({},data),
header:{'Content-Type': 'application/text'},
success(res){
resolve(res)
},
fail(err){
reject(err)
}
})
})
return p;
}
在http.js,根据当前环境,设置相应的baseurl,引入fetch中封装好的promise请求,封装基础的get\post\put\upload等请求方法,设置请求体,带上token和异常处理等;
设置对应的方法导出;
const evn=require('../env/index.js')
const api=require('./api')
const fetch=require('./fetch')
//确定开发环境
let baseUrl=evn.devBaseUrl;
//如果接口需要token鉴权,获取token
let token=wx.getStorageSync('token');
//轮播的请求函数
function banner(){
return fetch(baseUrl+api.banner,"get",{})
}
//list列表函数
//分类接口函数
module.exports={
banner
}
在全局app.js中导入http,注册到根组件
const http=require('./http/http.js')
// App.config=config[env];
App({
http, // http.fetch
})
在具体页面中,并使用;
//获取应用实例
const app=getApp();
Page({
data:{
list:[]
}
onLoad: function(){
app.http.banner().then((res)=>{
this.setData({
list: res.data.list
})
})
)