怎么将Vue3 Axios拦截器封装成request文件

1、创建一个名为request.js的新文件,并导入axios:

  1. import axios from 'axios';

登录后复制

2、创建一个名为request的函数,并将其导出:

创造一个函数名为request,并将其设定为一个带有基本URL的全新Axios实例。要在封装的 Axios 实例中设置超时,可以在创建 Axios 实例时传递 timeout 选项。

  1. export const request = axios.create({  baseURL: 'https://example.com/api',  timeout: 5000, // 超时设置为5秒});

登录后复制

3、在request函数中添加拦截器:

  1. request.interceptors.request.use(function (config) {  // 在发送请求之前做些什么  return config;}, function (error) {  // 对请求错误做些什么  return Promise.reject(error);});request.interceptors.response.use(function (response) {  // 对响应数据做点什么  return response;}, function (error) {  // 对响应错误做点什么  return Promise.reject(error);});

登录后复制

这将添加一个请求拦截器和一个响应拦截器。可以在这些拦截器中执行需要的操作,例如在请求发送之前添加身份验证标头或在响应返回后检查响应数据是否有误。

立即学习“前端免费学习笔记(深入)”;

4、最后,导出request函数:

  1. export default request;

登录后复制

现在,每个经过预定义拦截器的网络请求都可以通过应用程序中的request函数执行。例如:

  1. import request from './request';request.get('/users')  .then(function (response) {    console.log(response);  })  .catch(function (error) {    console.log(error);  });

登录后复制

这将使用封装的Axios实例发出GET请求,然后使用预定义的拦截器处理响应

完整示例:

要在发送请求之前携带Token和Username,可以使用请求拦截器来为所有请求添加身份验证标头,

请求拦截器检查localStorage中是否存在名为“token”和“username”的值,并将其添加为Authorization和Username标头。根据实际情况调整这些标头的名称和值。

要对响应数据进行操作,使用响应拦截器。在上述例子中,响应拦截器会验证响应数据里的“status”属性是否为“success”。如果不是,则将其视为错误,并将其作为异常抛出。响应对象内含异常信息,包括响应头、状态码和响应体等所有信息。可以根据实际情况调整这些检查和异常抛出的逻辑。

  1. import axios from 'axios';export const request = axios.create({  baseURL: 'https://example.com/api',  timeout: 5000, // 超时设置为5秒});request.interceptors.request.use(function (config) {  // 在发送请求之前添加身份验证标头  config.headers.Authorization = `Bearer ${localStorage.getItem('token')}`;  config.headers.Username = localStorage.getItem('username');  return config;}, function (error) {  // 对请求错误做些什么  return Promise.reject(error);});request.interceptors.response.use(function (response) {  // 对响应数据做些什么  const responseData = response.data;  if (responseData.status !== 'success') {    const error = new Error(responseData.message || '请求失败');    error.response = response;    throw error;  }  return responseData.data;}, function (error) {  // 对响应错误做些什么  return Promise.reject(error);});

登录后复制

以上就是怎么将Vue3 Axios拦截器封装成request文件的详细内容,更多请关注【创想鸟】其它相关文章!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
编程技术

vue3怎么实现淘宝放大镜效果

2025-4-1 16:22:24

编程技术

vue3 keepalive线上问题怎么解决

2025-4-1 16:22:37

0 条回复 A文章作者 M管理员
欢迎您,新朋友,感谢参与互动!
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
私信列表
搜索