| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import axios from 'axios';
- import { CACHE_KEY } from '@/constants';
- const api = axios.create({
- baseURL: import.meta.env.VITE_SCIENTIFIC_API_URL || import.meta.env.VITE_API_URL,
- timeout: 1000 * 60,
- responseType: 'json',
- paramsSerializer: {
- serialize: (params) => {
- // 简单的参数序列化,替代 qs
- return Object.keys(params)
- .map(key => {
- const val = params[key];
- if (val === undefined || val === null) return '';
- if (Array.isArray(val)) {
- return val.map(v => `${encodeURIComponent(key)}=${encodeURIComponent(v)}`).join('&');
- }
- return `${encodeURIComponent(key)}=${encodeURIComponent(val)}`;
- })
- .filter(p => p !== '')
- .join('&');
- },
- },
- });
- api.interceptors.request.use((request) => {
- // 设置请求头
- if (request.headers) {
- const token = uni.getStorageSync('SCITOKEN');
- if (token) {
- request.headers.Authorization = 'Bearer ' + token;
- }
- }
- return request;
- });
- api.interceptors.response.use(
- (response) => {
- // 如果是 blob 响应,直接返回
- if (response.config.responseType === 'blob') {
- return response;
- }
- if (response.data.code === 200) {
- return Promise.resolve(response.data);
- } else if (response.data.code === 401) {
- uni.showToast({ title: '登录状态失效,请重新登录', icon: 'none' });
- } else {
- const msg = response.data.msg || '系统错误';
- uni.showToast({ title: msg, icon: 'none' });
- return Promise.reject(response.data);
- }
- return Promise.resolve(response.data);
- },
- async (error) => {
- let message = error.message;
- if (message === 'Network Error') {
- message = '后端网络故障';
- } else if (message.includes('timeout')) {
- message = '接口请求超时';
- }
- uni.showToast({ title: message, icon: 'none' });
- return Promise.reject(error);
- }
- );
- export default api;
|