Vue 中简易封装网络请求(Axios),包含请求拦截器和响应拦截器
axios简介
Axios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.js
特性
- 从浏览器创建 XMLHttpRequests
- 从 node.js 创建 http 请求
- 支持 Promise API
- 拦截请求和响应
- 转换请求和响应数据
- 取消请求
- 超时处理
- 查询参数序列化支持嵌套项处理
- 自动将请求体序列化为:
JSON (application/json)
Multipart / FormData (multipart/form–data)
URL encoded form (application/x–www–form–urlencoded) - 将 HTML Form 转换成 JSON 进行请求
- 自动转换JSON数据
- 获取浏览器和 node.js 的请求进度,并提供额外的信息(速度、剩余时间)
- 为 node.js 设置带宽限制
- 兼容符合规范的 FormData 和 Blob(包括 node.js)
- 客户端支持防御XSRF
安装
npm install axios;
示例代码
import axios from "axios";
// const token = localStorage.getItem("accessToken");
export const https = axios.create({
baseURL: "http://localhost:3000",
timeout: 15000,
headers: {},
});
// 添加请求拦截器
https.interceptors.request.use(
(config) => {
// 在发送请求之前做些什么
// if (token) {
// config.headers.accessToken = `Bearer ${token}`;
// }
return config;
},
(error) => {
// 对请求错误做些什么
// console.log(error);
return Promise.reject(error);
}
);
// 添加响应拦截器
https.interceptors.response.use(
(response) => {
// 2xx 范围内的状态码都会触发该函数。
// 对响应数据做点什么
// console.log(response);
if (response.status === 200) {
// console.log(Promise.resolve(response));
return Promise.resolve(response);
} else {
return Promise.reject(response);
}
// return response;
},
(error) => {
// 超出 2xx 范围的状态码都会触发该函数。
console.log(error);
// 对响应错误做点什么
return Promise.reject(error);
}
);
在Vue中引入使用
import { https } from "@/api/http";
//GET请求
// 写过的一个分页查询为例
https
.get("/display", {
params: {
pageSize: page.pageSize.value,
currentPage: page.currentPage.value,
},
})
.then((res) => {
console.log(res);
})
.catch((error) => {
console.log(error);
});
// 另一种写法
https.get("/display?ID=12345")
.then((res) => {
console.log(res);
})
.catch((error) => {
console.log(error);
});
//POST请求
https
.post("/display", {
id: id.value,
})
.then((res) => {
console.log(res);
})
.catch((error) => {
console.log(error);
});
原文地址:https://blog.csdn.net/yuyunbai0917/article/details/134450749
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_6949.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。