// 添加请求拦截器
axios.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
// config 应该是请求的配置和传参
return config;
// 还可以返回 promise.reject 来拒绝请求
return Promise.reject(error);
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
// 添加响应拦截器,可以为自定义 axios 实例添加拦截器
axios.interceptors.response.use(function (response) {
// 对响应数据做点什么
return response;
}, function (error) {
// error.config 包含了 axios 请求的参数,包括 url 和 method
// 对响应错误做点什么
return Promise.reject(error);
});
const myInterceptor = axios.interceptors.request.use(function () {/*...*/});
axios.interceptors.request.eject(myInterceptor);
{
// `data` 由服务器提供的响应
data: {}, // 不一定为对象
// `status` 来自服务器响应的 HTTP 状态码
status: 200,
// `statusText` 来自服务器响应的 HTTP 状态信息
statusText: 'OK',
// `headers` 服务器响应的头
headers: {},
// `config` 是为请求提供的配置信息
config: {}
// `request` 代表生成此相应请求的对象
// 在node.js 中如果有重定向,它指向最后一个重定向产生的请求
// 在浏览器中它是一个 XMLHttpRequest实例
request: {}
}
axios.get('/user/12345')
.then(function(response) {
console.log(response.data);
console.log(response.status);
console.log(response.statusText);
console.log(response.headers);
console.log(response.config);
// 没有response.request
});
// 错误有以下几种
// 请求发起失败
// 请求发起成功,没有任何响应(响应错误)
// 成功响应,响应返回 200 以外的值?
axios.get('/user/12345')
.catch(function (error) {
if (error.response) {
// 请求已经发起,服务器已经返回了响应状态码
// 状态码不是 2xx 时(需要使用 validateStatus 配置选项定义一个自定义 HTTP 状态码的错误范围。)
console.log(error.response.data);
console.log(error.response.status);
console.log(error.response.headers);
} else if (error.request) {
// 响应错误时(请求已发出,未收到响应,例如超时)
// `error.request` 在浏览器中是 XMLHttpRequest 实例
// 在 node.js 中是 http.ClientRequest 实例
console.log(error.request);
} else {
// 请求发起错误(请求未正确发起)
console.log('Error', error.message);
}
console.log(error.config);
});
axios.request({
url: "http://example.com",
method: "get",
headers:{
Cookie: "cookie1=value; cookie2=value; cookie3=value;"
}
}).then(...)
axios({
method: 'post',
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
});
// 获取远端图片
axios({
method:'get',
url:'http://bit.ly/2mTM3nY',
responseType:'stream' // responseType表示期望服务器响应的数据类型
})
.then(function(response) {
// pipie nodejs中对流数据的一种操作
// fs nodejs中文件对象
// fs.createWriteStream 保存文件
response.data.pipe(fs.createWriteStream('ada_lovelace.jpg'))
});
// 发送 GET 请求(默认的方法)
axios('/user/12345');
axios.get('/user?ID=12345')
// 可写为
axios.get('/user', {
params: {
ID: 12345
}
})
axios.post('/user', {
firstName: 'Fred',
lastName: 'Flintstone'
})
原文:https://www.cnblogs.com/qq3279338858/p/10882479.html