axios的使用
1.安装axios
$ npm install axios
2.创建一个axios实例
import axios from 'axios'
const service = axios.create({
baseURL: baseURL,
timeout: 10000,
transformRequest: [(data) => {
if(typeof data === 'object' && data !== null) {
Object.keys(data).forEach(item => {
if(data[item] !== null && data[item] !== undefined && data[item] !== '') {
if(Array.isArray(data[item])) {
body.append(item, JSON.stringify(data[item]))
} else {
body.append(item, data[item])
}
}
})
return body;
}
return data;
}]
});
axios.defaults.withCredentials = true
3.request拦截器
service.interceptors.request.use(config => {
config.headers['Content-Type'] = 'application/json'
return config
}, error => {
console.log(error)
Promise.reject(error)
})
4.respone拦截器
service.interceptors.response.use(
/**
* 下面的注释为通过response自定义code来标示请求状态,当code返回如下情况为权限有问题,登出并返回到登录页
* 如通过xmlhttprequest 状态码标识 逻辑可写在下面error中
*/
response => {
return response
},
error => {
console.log('err' + error)
return Promise.reject(error)
}
)
5.导出
export default service
调用axios方法(例子)
1.调用接口Api
import fetch from '../config/fetch.js'
export function msiteFoodTypes (opt) {
return fetch({
url: '/v2/index_entry',
method: 'get',
params: opt
})
}
/**
*@param username 用户名 Y
*@param password 密码 Y
*@param captcha_code 验证码 Y
*/
export function login (opt) {
return fetch({
url: '/v2/login',
method: 'post',
data: opt
})
}