1、创建 api.js ,config.js ,request.js
2、config.js 中
// 获取平台信息
const {
system,
} = uni.getSystemInfoSync()
// 请求服务器环境,xxx 在这里是填充,请自行替换
let baseUrl = ['',"http://192.168.1.21:8080",]
// 小程序重要参数
uni.config = {
platform: system.startsWith("iOS") ? 2 : 1, // IOS为2 安卓为1
imgUrl: baseUrl[2], // 图片地址前缀
baseUrl: baseUrl[2],
appid: "",
agentid:'',
state:1, //0 企业微信 1 h5
}
3、request.js中
import CryptoJS from '../common/crypto-js/index.js' //加密数据js
const {
baseUrl,
appid
} = uni.config
// 封装接口请求
uni.http = (args = {}) => {
let url = args.url || ''
let data = args.data || {}
// data.appid = appid
let method = args.method || 'GET'
return new Promise((resolve, reject) => {
request(url, data, method, resolve, reject)
})
}
// 接口封装
const request = async (url, param = {}, method, resolve, reject) => {
let token = getToken()
let header = {
'content-type': 'application/x-www-form-urlencoded',
'token': token
}
if (param) {
var data = param;
}
console.log("传值:", data);
uni.request({
header,
url: baseUrl + url,
method,
data,
dataType: 'json',
success: res => {
if (res.statusCode == 500) {
alert('后端接口异常,请联系后端管理员!')
}
if (res.data.code == '0' || res.data.success == true) {
var obj = res
console.log("返回数据:", obj.data);
resolve(obj.data)
} else {
//解密
var key = CryptoJS.enc.Utf8.parse('4aefd24fa41f4456');
var decrypt = CryptoJS.AES.decrypt(res.data, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
var data = CryptoJS.enc.Utf8.stringify(decrypt);
var obj = JSON.parse(data)
console.log("解密返回数据:", obj);
if (obj.success == true) {
let code = obj.code
if (code == 0) {
if (obj.msg == '操作成功') {
uni.showToast({
icon: 'success',
title: obj.msg,
duration: 500,
})
} else {
uni.showLoading({
title: '加载中',
});
setTimeout(function() {
uni.hideLoading();
}, 500)
}
resolve(obj.data)
} else {
resolve(obj.data)
}
} else {
uni.showToast({
icon: 'error',
title: obj.msg,
duration: 2000,
})
}
}
},
fail: err => {
reject(err)
}
})
}
// 获取Token
const getToken = () => {
var token = uni.getStorageSync('token');
if (token) {
return token
} else {
uni.reLaunch({
url: '/pages/login/login.vue'
})
}
}
4、api.js 中
//微信登录接口
let wxLogin = function(data) {
return uni.http({
url:'/api/user/wxLogin',
data,
method: "POST"
})
}
// 全局输出
uni.service = {
wxLogin
}
5、mian.js中
import '@/util/config'
import '@/util/request'
import '@/util/api'
6、登录页面
uni.service.wxLogin({name:''}).then((res)=>{
uni.setStorage({
key:'token',
data:res.token,
success: function () {
console.log('success');
}
})
})