*创建utils/request.js 文件
// @/utils/request.js
// import store from '@/store/index.js'//vuex环境
const base_url = {
PROD: '', // 生产环境地址
DEV: 'https://m.douban.com/rexxar/api' // 开发环境地址
}
// 请求拦截器
uni.addInterceptor('request', {
invoke(args) {
console.log('发送请求前拦截==》》',args)
// 发送请求前
},
success(args) {
// 请求成功响应后
},
fail(err) {
// 请求失败
console.log('interceptor-fail',err)
},
complete(res) {
// 完成请求后
}
})
const showToast = (title) => {
uni.showToast({
title: title,
icon: 'none'
})
}
const request = (obj) => {
obj.url = obj.url || '';
obj.method = obj.method || 'GET';
obj.data = obj.data || {};
obj.header = obj.header || 'application/json; charset=utf-8';
obj.loading = obj.loading === false ? false : true;
// let token = token || ''; // 登录获得的 token
let loadingStatus = true;
setTimeout(()=>{
if (loadingStatus && obj.loading) {
uni.showLoading({
title:'加载中',
mask: true
})
}
}, 800) // 800毫秒后如果loadingStatus === false 则表示请求返回了,不显示loading
return new Promise((resolve, reject) => {
uni.request({
url: (process.env.NODE_ENV === 'development' ? base_url.DEV : base_url.PROD) + obj.url,
method: obj.method,
data: obj.data,
header: {
// 'TOKEN': token,
'Content-Type': obj.header
},
success: res => { // 服务器成功返回的回调函数
console.log('res=>>>',res)
if (res.statusCode === 200) {
let result = res.data;
reject(result);
} else { // 返回值非 200,强制显示提示信息
loadingStatus = false
showToast('[' + res.statusCode + '] 系统处理失败');
reject('[' + res.statusCode + '] 系统处理失败');
}
},
fail: (err) => { // 接口调用失败的回调函数
if (err.errMsg != 'request:fail abort') {
loadingStatus = false
showToast('连接超时,请检查您的网络。');
reject('连接超时,请检查您的网络。');
}
},
complete: () => {
if (loadingStatus && obj.loading) {
uni.hideLoading()
loadingStatus = false
}
}
})
})
}
export default request
*创建api/user.js文件
import http from '@/utils/request.js'
// 登录
export function login(data) {
return http({url: '/v2/tv/recommend', method:'GET', data});
}
*页面使用
在这里插入代码片
import { login } from '@/api/user.js'
async onLoad(){
try {
const { data: res } = await login({
refresh: 0,
start: 0,
count: 20,
selected_categories: {},
uncollect: false,
tags: '',
});
console.log("login=>",res);
} catch (err) {
console.log("loginErr=>",err);
}
// or login().then(()=>{}).catch(()=>{})
}