Files
vue-frame/src/api/base-service.ts
2023-08-01 15:58:34 +08:00

82 lines
2.8 KiB
TypeScript
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.
/*
* @Description: {{ByRuin}}
* @Version: 2.0
* @Author: Ruin 🍭
* @Date: 2022-01-25 17:48:13
* @LastEditors: 刘引
* @LastEditTime: 2022-01-25 17:52:39
*/
/* 1.引入文件 */
import axios from 'axios' //引入 axios库
// @ts-ignore
import qs from 'qs' //引入 node中自带的qs模块数据格式转换
/* 2.全局默认配置 */
let baseURL
let process: any
// 判断开发环境(一般用于本地代理)
if (process.env.NODE_ENV === 'development') {
// 开发环境
baseURL = 'http://www.liulongbin.top:3006' // 你设置的本地代理请求(跨域代理),下文会详细介绍怎么进行跨域代理
} else {
// 编译环境
if (process.env.type === 'test') {
// 测试环境
baseURL = 'http://www.liulongbin.top:3006'
} else {
// 正式环境
baseURL = 'http://www.liulongbin.top:3006'
}
}
// 配置axios的属性
axios.defaults.timeout = 6000 // 请求超时时间1分钟
axios.defaults.baseURL = baseURL // 你的接口地址
axios.defaults.responseType = 'json'
axios.defaults.withCredentials = false //是否允许带cookie这些
/*你也可以创建一个实例,然后在实例中配置相关属性,此方法和上面的方法一样,写法不同,怎么用随个人
*喜好,我比较喜欢用这种方法,如下:
*/
const Axios = axios.create({
baseURL: baseURL, // 后台服务地址
timeout: 60000, // 请求超时时间1分钟
responseType: 'json',
withCredentials: false // 是否允许带cookie这些
})
/* 3.设置拦截器 */
/*如果不是用创建实例的方式配置那么下面的Axios都要换成axios,也就是文件开头你用import引入axios
时定义的变量*/
Axios.interceptors.request.use(
(config) => {
//发送请求前进行拦截
// 可在此处配置请求头信息
// config.headers["appkey"] = "...";
// config.headers["token"] = "...";
if (config.method == 'post') {
/*数据转换: axios post方式默认是json格式提交数据如果使用application/x-www-form-urlencoded数据格式提交要用qs.stringify()进行转换,个人建议不在拦截器中全局配置,因为不够灵活,还有一点是,如果
设置了重新请求的配置那么重新请求时请求体中的config里面的传参就会被再次进行qs.stringify()转
换,会使得参数丢失,造成请求失败。*/
config.data = qs.stringify(config.data)
}
return config
},
(error) => {
//console.log("错误的传参", 'fail');
return Promise.reject(error)
}
)
Axios.interceptors.response.use(
(res) => {
//请求响应后拦截
if (res.status == 200) {
// 对响应数据做些事
//alert("提交成功")
return Promise.resolve(res)
}
return res
},
(error) => {
//alert("网络异常!") 404等问题可以在这里处理
return Promise.reject(error)
}
)
export default Axios