ajax远程金属,AJAX

import axios from 'axios'

import router from './router' // 同级的路由文件router.js

axios.defaults.headers = { // 自定义请求头

}

axios.defaults.timeout = 10000 // 超时时间(单位:毫秒)

axios.defaults.withCredentials = true // 跨域相关

// 单个请求

export const ajax = function (obj) {

let { base, url, method = 'GET', params, data } = obj

let baseURL = ''

if (process.env.NODE_ENV == 'production') { // production 生产环境

if (base == '/zw') {

baseURL = 'http://zuowen.api.juhe.cn'

} else {

baseURL = 'http://apis.juhe.cn'

}

} else { // development 开发环境

baseURL = base || '/api'

}

return axios({

baseURL: baseURL, // 自动加在`url`前面,除非`url`是一个绝对URL

url: url,

method: method,

params: method == 'GET' ? params : null,

data: ['POST', 'PUT', 'PATCH'].includes(method) ? data : null,

// transformRequest: [data => { // 可在发送请求前,修改请求数据(只适用于'PUT'、'POST'、'PATCH'请求)

// if (data) {

// // 对 data 进行任意转换处理

// return data

// }

// }],

// transformResponse: [res => { // 可在传给then/catch前,修改响应数据

// // 对 res 进行任意转换处理

// return res

// }],

// validateStatus: function (status) { // 根据 响应状态码 定义响应是 resolve 或 reject (如果validateStatus返回true或设置为null和undefined,promise被resolve;否则promise被rejecte)

// return status >= 200 && status < 300

// }

})

}

// 并发请求

export const ajaxAll = function (arr) {

return axios.all(arr)

}

// 请求拦截器

axios.interceptors.request.use(config => {

// 在发送请求之前做些什么

return config

}, err => {

// 对请求错误做些什么

return Promise.reject(err)

})

// 响应拦截器

axios.interceptors.response.use(res => { // 对响应数据做点什么

if (res.status == 200) { // 状态码 200 走resolve

return Promise.resolve(res.data)

} else { // 状态码 非200 走reject

return Promise.reject(res)

}

}, err => { // 对响应错误做点什么

if (err.response.status) {

switch (err.response.status) {

case xxx: // 例如:未登录则跳转登录页面,并携带当前页面路径

console.log(router.currentRoute.fullPath, router.currentRoute)

router.replace({

path: '/login',

query: { redirect: router.currentRoute.fullPath }

})

break

case 404:

// 代码块: 提示 404 错误

break

case 500:

// 代码块: 提示 500 或其他错误

break

}

return Promise.reject(err.response)

}

})

复制代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值