| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- // src/utils/request.js
- import config from '@/config'
- import { getToken } from '@/utils/auth'
- import { toast, showConfirm, tansParams } from '@/utils/common'
-
- const baseUrl = config.baseUrl
- let timeout = 10000
-
- const request = (configObj) => { // 重命名参数为 configObj
- // 确保传入的配置对象有效
- configObj = configObj || {}
- configObj.header = configObj.header || {}
-
- // 处理 token
- const token = getToken()
- // 只有存在token且未明确禁止携带token时才添加
- if (token && configObj.header.isToken !== false) {
- configObj.header['Authorization'] = 'Bearer ' + token
- } else if (!token) {
- console.warn('请求未携带Token:', configObj.url)
- }
-
-
- // GET 请求参数处理
- if (configObj.params) {
- let url = configObj.url + '?' + tansParams(configObj.params)
- url = url.slice(0, -1)
- configObj.url = url
- }
-
- return new Promise((resolve, reject) => {
- uni.request({
- method: configObj.method || 'get',
- timeout: configObj.timeout || timeout,
- url: (configObj.baseUrl || baseUrl) + configObj.url,
- data: configObj.data,
- header: configObj.header,
- dataType: 'json',
- success: (res) => {
- // 处理401认证失败
- if (res.statusCode === 401) {
- // 更友好的错误处理
- const errorMsg = res.data?.msg || '认证失败,请重新登录';
- console.warn('认证失败:', configObj.url, errorMsg);
-
- // 显示提示但不强制跳转
- toast(errorMsg);
-
- // 清除无效token
- if (token) {
- uni.removeStorageSync('token');
- localStorage.removeItem('token');
- }
-
- reject(new Error(errorMsg));
- } else if (res.statusCode === 200) {
- resolve(res.data);
- } else {
- reject(res.data);
- }
- },
- fail: (err) => {
- let message = '后端接口连接异常'
- if (err.errMsg.includes('timeout')) {
- message = '请求超时'
- }
- toast(message)
- reject(err)
- }
- })
- })
- }
-
- // 添加便捷方法
- request.get = (url, params, config = {}) => {
- return request({
- url,
- params,
- method: 'get',
- ...config
- })
- }
-
- request.post = (url, data, config = {}) => {
- return request({
- url,
- data,
- method: 'post',
- ...config
- })
- }
-
- export default request
|