别看了,写的就是垃圾,后续一点都不好用
- 封装公共的请求类
utils文件夹下创建request.js文件
// request.js
const timeout = 1000 * 12; // 请求超时时间
let request = {};
// post請求
request.post = (url, data) => {
return new Promise((resolve, reject) => {
wx.request({
url,
data,
header: {
'content-type': 'application/x-www-form-urlencoded'
},
timeout,
method: 'POST',
complete: (res) => {
if (res.statusCode >= 200 && res.statusCode < 300) {
resolve(res.data)
} else {
reject(res)
}
}
})
})
}
// get請求
request.get = (url, data) => {
return new Promise((resolve, reject) => {
wx.request({
url,
data,
timeout,
complete: (res) => {
if (res.statusCode >= 200 && res.statusCode < 300) {
resolve(res.data)
} else {
reject(res)
}
}
})
})
}
module.exports = request;
- 包装公共接口路径
根目录下创建api文件夹,在该文件夹下创建base.js文件
// base.js
// 域名接口管理
const env = wx.getAccountInfoSync().miniProgram.envVersion; // 获取小程序版本
const base = {
sq: env === 'develop' ? '开发环境接口公共路径' : env === 'trial' ? '体验环境接口公共路径' : '正式环境接口公共路径'
}
module.exports = base;
- 封装各模块接口
比如和用户相关操作的接口,在api文件夹下创建user.js文件
// user.js
let base = require('./base'); // 导入接口域名列表
let request = require('../utils/request'); // 导入request中创建的请求实例
const user = {
// 用户登录
login(data) {
return request.post(`${base.sq}/index/Login/user`, data);
},
// ...其他接口
}
module.exports = user
若是get请求
// get请求
detail(data) {
return request.get(`${base.sq}/index/protocol/detail`, data);
}
- 创建api接口的统一出口
在api文件夹下创建index.js文件
// api接口的统一出口
const user = require('./user');
const protocol = require('./protocol');
// 其他模块的接口...
// 导出接口
module.exports = {
user,
protocol,
//...
}
- 挂载到app.js上,使得全局都可用api
// api.js
let api = require('./api/index');
App({
api
})
- 使用封装好的接口
// 获取应用实例
const app = getApp();
app.api.user.login({phone: '15966664444'}).then(res => {
console.log(res);
})
app.api.protocol.detail({type: 1}).then(res => {
console.log(res);
})
- 其他
如果https域名还未申请下来只能用http的,可以把不检验合法域名勾上。