我们在项目中使用axios的时候,可能会对其进行一层封装,以处理后台接口还没有出来的时候,我们可能需要通过mock.js来模拟后台接口的情况. 但是在这种情况下,get请求的参数可能就不太好处理.
我们可以通过判断axios中请求方式是不是get来对携带的参数进行对应的处理.这个需要在请求拦截器中判断
// get 参数序列化
export default function serialize(obj) {
let ary = []
for (var p in obj)
if (obj.hasOwnProperty(p) && obj[p]) {
ary.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p]))
}
return '?' + ary.join('&')
}
import axios from 'axios'
import serialize form './params-serialize'
// 创建axios实例
const service = axios.create({
timeout: 66666666 // 请求超时时间
baseURL: 'https://some-domain.com/api/',
})
// request拦截器
service.interceptors.request.use(
config => {
config.headers['token'] = window.localStorage.getItem('token')
config.url = config.method == 'get'? config.url+serialize(config.url): formatUrl(config.url,1)
return config
},
error => {
// Do something with request error
Promise.reject(error)
}
)