ToB企服应用市场:ToB评测及商务社交产业平台

标题: Vue 中简易封装网络请求(Axios),包含请求拦截器和响应拦截器 [打印本页]

作者: tsx81428    时间: 2024-6-7 18:23
标题: Vue 中简易封装网络请求(Axios),包含请求拦截器和响应拦截器
Vue 中简易封装网络请求(Axios),包含请求拦截器和响应拦截器

axios简介

Axios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.js
Axios官方中文文档
特性


安装

  1. npm install axios;
复制代码
示例代码

https.js
  1. import axios from "axios";
  2. // const token = localStorage.getItem("accessToken");
  3. export const https = axios.create({
  4.   baseURL: "http://localhost:3000",
  5.   timeout: 15000,
  6.   headers: {},
  7. });
  8. // 添加请求拦截器
  9. https.interceptors.request.use(
  10.   (config) => {
  11.     // 在发送请求之前做些什么
  12.     // if (token) {
  13.     //   config.headers.accessToken = `Bearer ${token}`;
  14.     // }
  15.     return config;
  16.   },
  17.   (error) => {
  18.     // 对请求错误做些什么
  19.     // console.log(error);
  20.     return Promise.reject(error);
  21.   }
  22. );
  23. // 添加响应拦截器
  24. https.interceptors.response.use(
  25.   (response) => {
  26.     // 2xx 范围内的状态码都会触发该函数。
  27.     // 对响应数据做点什么
  28.     // console.log(response);
  29.     if (response.status === 200) {
  30.       // console.log(Promise.resolve(response));
  31.       return Promise.resolve(response);
  32.     } else {
  33.       return Promise.reject(response);
  34.     }
  35.     // return response;
  36.   },
  37.   (error) => {
  38.     // 超出 2xx 范围的状态码都会触发该函数。
  39.     console.log(error);
  40.     // 对响应错误做点什么
  41.     return Promise.reject(error);
  42.   }
  43. );
复制代码
在Vue中引入使用

  1. import { https } from "@/api/http";
  2. //GET请求
  3. // 写过的一个分页查询为例
  4. https
  5.   .get("/display", {
  6.     params: {
  7.       pageSize: page.pageSize.value,
  8.       currentPage: page.currentPage.value,
  9.     },
  10.   })
  11.   .then((res) => {
  12.     console.log(res);
  13.   })
  14.   .catch((error) => {
  15.     console.log(error);
  16.   });
  17.   // 另一种写法
  18. https.get("/display?ID=12345")
  19.   .then((res) => {
  20.     console.log(res);
  21.   })
  22.   .catch((error) => {
  23.     console.log(error);
  24.   });
  25. //POST请求
  26. https
  27.   .post("/display", {
  28.           id: id.value,
  29.   })
  30.   .then((res) => {
  31.     console.log(res);
  32.   })
  33.   .catch((error) => {
  34.     console.log(error);
  35.   });
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4