1、代码片段 https://developers.weixin.qq.com/s/h5NeS7m57ezM
2、项目目录
3、代码示例
1、有多个环境配置的项目,可通过如下代码做配置
/*
* develop=开发版
* trial=体验版
* release=正式版
*/
var {
envVersion
} = wx.getAccountInfoSync().miniProgram; // wx.getAccountInfoSync() uni 无法转换 getAccountInfoSync
// envVersion = "develop" // 方便调试
export const BASEURL = ({
develop: "http://localhost:3003",
trial: "http://localhost:3003",
release: "http://localhost:3003",
})[envVersion];
// 习惯链式封装函数,或有接触 https://panjiachen.gitee.io/vue-element-admin-site/zh/ 的可用 fetchDemo.js 里面的操作方式
import {
request
} from '../utils/request.js';
import {
BASEURL
} from './BASEURL.js';
export function fetchDemo(data) {
return request({
url: BASEURL + "/api/Common/List",
data: data,
method: "get",
})
}
async function GoExample_01() {
/**
* 改造使用链式结构
*/
// 同步
let result = await util.API.fetchDemo({}, {
isLoading: true,
mask: false,
})
console.log("result=>", result)
}
2、 习惯原生小程序开发,不想改变wx.request 结构使用的可选用
/***
* 传统模式 尽量保持
wx.request({
url: 'url',
})
一致
*/
util.request({
...util.API.fetchExample(),
success(res) {
console.log("传统 res=>", res)
},
fail(err) {
console.log("传统 err=>", err)
}
})
代码封装
/**
*
* @param {*} options
* @param {*} params
* isLoading 是否显示加载条
* mask 是否穿透
*/
export const request = function (options = {}, params = {}) {
options.header = options.header ? options.header : {};
const Token = wx.getStorageSync('Token');
try {
options.header["Authorization"] = "Authorization" + " " + Token;
} catch (e) {
console.log(e)
}
var next;
if (params && params.isLoading) {
wx.showLoading({
title: '',
mask: params.mask ? true : false
})
next = function () {
wx.hideLoading();
}
}
return new Promise((reslove, reject) => {
wx.request({
...options,
...{
timeout: 30 * 1000,
success: (res) => {
if (!!next) {
next();
}
console.log("请求 options.data=>", options.data);
console.log("请求 res.data=>", res.data);
let {
Code,
Data,
Msg
} = res.data;
if (typeof options.success == "function") {
options.success(res);
}
reslove(res.data);
},
fail: (err) => {
if (!!next) {
next();
}
console.log("请求 err=>", err);
if (typeof options.fail == "function") {
options.fail(err);
}
if (!options.hideNetToast) {
netFailToast();
}
reject(err);
}
}
});
})
}