| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /* src/utils/request.js */
- import axios from 'axios'
- // 如果你用了 Vant UI,可以把下面这行解开,用来弹窗提示错误
- import { showToast, showFailToast } from 'vant';
- import 'vant/es/toast/style';
- // 1. 创建 axios 实例
- const service = axios.create({
- // 基础 URL,通常在 .env 文件中配置 VUE_APP_BASE_API
- baseURL: process.env.VUE_APP_BASE_API || '/api',
- // 请求超时时间 (毫秒),交易类应用建议设置短一点,比如 10秒
- timeout: 10000,
- headers: {
- 'Content-Type': 'application/json;charset=utf-8'
- }
- })
- // 2. 请求拦截器 (Request Interceptor)
- // 在发送请求之前做些什么,比如加 Token
- service.interceptors.request.use(
- config => {
- // 假设你的 token 存在 localStorage 里
- const token = localStorage.getItem('token')
-
- if (token) {
- // 让每个请求携带自定义 token 请根据实际情况修改
- // 例如:config.headers['Authorization'] = 'Bearer ' + token
- config.headers['token'] = token
- }
- return config
- },
- error => {
- // 对请求错误做些什么
- console.log(error)
- return Promise.reject(error)
- }
- )
- // 3. 响应拦截器 (Response Interceptor)
- // 对响应数据做点什么
- service.interceptors.response.use(
- response => {
- const res = response.data
-
- // 这里根据后端返回的状态码来判断请求是否成功
- // 假设后端约定 code === 00000 为成功
- if (res.code !== "00000") {
- // 如果不是 200,说明业务逻辑有错,比如“余额不足”
-
- // showFailToast(res.msg || 'Error') // 如果用了 Vant,可以用这个提示
- console.error('业务报错:', res.msg)
- // 特殊处理:比如 401 表示 Token 过期,需要跳回登录页
- if (res.code === 401) {
- //以此处逻辑为准:清除本地数据,强制刷新或跳转
- localStorage.removeItem('token')
- location.reload()
- }
-
- return Promise.reject(new Error(res.msg || 'Error'))
- } else {
- // 成功,直接把数据剥离出来
- return res.data
- }
- },
- error => {
- console.log('网络报错' + error) // for debug
- let message = error.message
-
- if (message == 'Network Error') {
- message = '后端接口连接异常'
- } else if (message.includes('timeout')) {
- message = '系统接口请求超时'
- } else if (message.includes('Request failed with status code')) {
- message = '系统接口' + message.substr(message.length - 3) + '异常'
- }
-
- showFailToast(message)
- return Promise.reject(error)
- }
- )
- export default service
|