| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- // src/utils/request.js
- import config from '@/config'
- const baseUrl = config.baseUrl
- // 使用直接导出的函数,避免 this 上下文问题
- export function get(url, params = {}, options = {}) {
- return request('GET', url, params, options)
- }
-
- export function post(url, data = {}, options = {}) {
- return request('POST', url, data, options)
- }
-
- function request(method, url, data = {}, options = {}) {
- return new Promise((resolve, reject) => {
- // 处理路径
- let finalUrl = url;
-
- // 特殊处理 Java API
- if (url.startsWith('/java-api')) {
- finalUrl = url
- }
- // 普通 API 处理
- else if (!url.startsWith('http')) {
- // 确保只有一个 /api 前缀
- if (!url.startsWith('/api')) {
- finalUrl = '/api' + (url.startsWith('/') ? url : `/${url}`);
- }
- }
-
- const baseUrl = process.env.VUE_APP_BASE_API || '/';
- const fullUrl = baseUrl + finalUrl;
-
- console.log('请求URL:', fullUrl, '方法:', method);
-
- uni.request({
- url: fullUrl,
- method,
- data,
- header: {
- 'Content-Type': 'application/json',
- ...(options.headers || {})
- },
- success: (res) => {
- console.log('API响应:', res);
-
- // 处理未授权情况
- if (res.statusCode === 401) {
- uni.showToast({
- title: '请先登录',
- icon: 'none'
- });
- uni.navigateTo({
- url: '/pages/login'
- });
- reject(new Error('未授权访问'));
- return;
- }
-
- // 统一处理成功响应
- if (res.statusCode >= 200 && res.statusCode < 300) {
- resolve(res.data)
- } else {
- // 尝试提取错误消息
- const errorMsg = res.data?.msg || res.data?.message || '请求失败';
- reject(new Error(errorMsg))
- }
- },
- fail: (err) => {
- console.error('请求失败:', err);
- reject(err)
- }
- })
- })
- }
-
- // 导出对象以兼容旧代码
- export default {
- get,
- post,
- request
- }
|