主题
请求封装
js
import { isProd } from './env.js'
const baseUrl = 'https://dummyjson.com'
// 拦截器
const requestInterceptor = {
// 拦截前触发
invoke(options) {
// baseUrl 拼接
if (!options.url.startsWith('http')) {
options.url = baseUrl + options.url
}
// options.timeout = 3000
options.header = {
...options.header,
}
const token = uni.getStorageSync('token')
if (token) {
// options.header.Authorization = token
}
},
}
uni.addInterceptor('request', requestInterceptor)
uni.addInterceptor('uploadFile', requestInterceptor)
// 请求方法封装
export const request = (option) => {
return new Promise((resolve, reject) => {
uni.request({
...option,
// 响应成功
success(res) {
console.log(res)
if (res.statusCode >= 200 && res.statusCode < 300) {
resolve(res.data)
} else if (res.statusCode === 401) {
// 清理登录信息
// TODO
// 跳转登录页
uni.navigateTo({
url: '/pages/login/login',
})
reject(new Error('无权限'))
} else {
const errorMsg = res.data.message || '请求错误'
uni.showToast({
icon: 'none',
title: errorMsg,
})
reject(errorMsg)
}
},
// 响应失败(网络错误)
fail(err) {
reject(err)
},
})
})
}
export const get = (url, params = {}) => {
return request({
url,
method: 'GET',
data: params,
})
}
export const post = (url, data = {}) => {
return request({
url,
method: 'POST',
data,
})
}
export const put = (url, data = {}) => {
return request({
url,
method: 'PUT',
data,
})
}
export const del = (url, data = {}) => {
return request({
url,
method: 'DELETE',
data,
})
}