新建netaxios.js文件,在netaxios.js引入axios依赖,可以加这里配置拦截器、请求超时时长设置等。
import axios from 'axios'
const axiosInstance = axios.create({
timeout: 1000 * 60 * 60,
validateStatus: function (status) {
return status >= 200 && status < 300
},
})
// 拦截器(请求拦截)
axiosInstance.interceptors.request.use((config) => {
return config
})
// 拦截器(响应拦截)
axiosInstance.interceptors.response.use((res) => {
return res
}, (err) => {
return err
})
export default axiosInstance
新建http.js文件,引入netaxios.js,对几种通用请求进行二次封装。
/**
* 通用请求封装
*/
import netaxios from "@/common/network/netaxios"
import {parseQueryParams} from '@/common/util/parse_query_params'
export const get = function (url, params = {}, config = {}) {
return netaxios.get(url, {
params,
}, config)
}
export const post = function (url, params = {}, config = {}) {
return netaxios.post(url, params, config)
}
export const put = function (url, {id, params = {}}, config = {}) {
let rUrl = url
if (id !== undefined && id !== '') {
rUrl = url + '/' + id
}
return netaxios.put(rUrl, params, config)
}
export const deleter = function (url, id, config = {}) {
return netaxios.delete(url + '/' + id, {}, config)
}
export const patch = function (url, {id, params = {}}, config = {}) {
let rUrl = url
if (id !== undefined && id !== '') {
rUrl = url + '/' + id
}
return netaxios.patch(rUrl, params, config)
}
/**
* 发送 query string形式的post请求
* @param url
* @param params 请求参数对象
* @returns {Promise<any>}
*/
export const postForm = function (url, params = {}) {
return post(url, params, {
transformRequest: [function (data) {
data = parseQueryParams(data);
return data
}],
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
})
}
引入方式示例
import {
get,
post,
patch,
put,
deleter
} from "@/common/network/http"