1
0
forked from dyf/APP
Files
APP/utils/request.js
2025-07-05 14:49:26 +08:00

74 lines
2.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import axios from 'axios'
// 如果使用 Vuex 且需要 token请取消注释
// import store from '@/store'
// 示例:如果你有身份验证相关的工具函数
// import { getToken } from '@/utils/auth'
// 创建 Axios 实例
const service = axios.create({
// 重要:请在此处配置你的 API 基础 URL
// 你可以从环境变量或配置文件中获取
baseURL: process.env.VUE_APP_BASE_API || '/api', // 示例基础 URL
timeout: 10000 // 请求超时时间 (毫秒)
})
// 请求拦截器
service.interceptors.request.use(
config => {
// 如果需要,添加 Authorization 请求头
// 示例:检查用户是否登录(例如,通过 Vuex store 或 auth 工具函数)
// if (store.getters.token) {
// // 根据你的认证方案调整
// config.headers['Authorization'] = 'Bearer ' + getToken()
// }
config.headers['Content-Type'] = config.headers['Content-Type'] || 'application/json';
return config
},
error => {
// 处理请求错误
console.error('Request Error:', error) // 用于调试
return Promise.reject(error)
}
)
// 响应拦截器
service.interceptors.response.use(
/**
* 如果你想获取诸如头信息或状态之类的http信息
* 请返回 response => response
*/
/**
* 通过自定义代码确定请求状态
* 这里只是一个例子
* 你也可以通过HTTP状态码判断状态
*/
response => {
const res = response.data
// 示例:根据你的后端响应结构调整此部分
// 如果自定义状态码不是 200 (或你的成功状态码),则判断为错误。
if (res.code !== 200 && res.code !== 0) { // 假设 200 或 0 表示成功
// 你可以在此添加全局错误处理,例如显示提示消息
// uni.showToast({ title: res.message || '错误', icon: 'none' });
console.error('API Error:', res.message || 'Error')
// 示例:处理特定的错误代码,例如未授权 (401)
// if (res.code === 401) {
// // 例如:重定向到登录页面
// }
return Promise.reject(new Error(res.message || 'Error'))
} else {
// 如果成功,则返回响应的数据部分
// 如果后端没有将数据包装在 'data' 字段中,请调整此项
return res.data
}
},
error => {
console.error('Response Error:', error.message) // 用于调试
// 处理网络错误或其他错误
// uni.showToast({ title: error.message, icon: 'none' });
return Promise.reject(error)
}
)
export default service