vue3 封装aixos

1. Vue3 封装 aixos 并且 使用 aixos 请求数据

bash 复制代码
npm install axios
# 或者
yarn add axios

2. Vue3 封装 aixos 并且 使用 aixos 请求数据

封装 axios可以帮助我们更好地管理 HTTP 请求,例如添加统一的基础URL请求头拦截器等功能。

下面是封装 axios的一个示例,以及如何在 Vite 项目中使用它来请求数据。

1.1. 创建 Axios 实例

首先,创建一个新的 JavaScript 文件,比如 http.jsaxiosInstance.js,并在其中配置 Axios 实例:

javascript 复制代码
// src/http.js

import axios from 'axios';

// 创建一个新的 axios 实例
const service = axios.create({
  baseURL: 'https://api.example.com', // 设置基础 URL
  timeout: 5000, // 设置超时时间
  headers: { 'Content-Type': 'application/json' } //设置默认的Content-Type
});

// 添加请求拦截器
service.interceptors.request.use(
  config => {
    // 在这里可以设置请求头、请求参数等return config
    // 例如添加 token 到请求头
    const token = localStorage.getItem('token'); // 示例:从本地存储获取 token
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  error => {
    console.log(error)
    return Promise.reject(error);
  }
);

// 添加响应拦截器
service.interceptors.response.use(
  response => {
    // 对响应数据做点什么
    // return response.data; // 返回实际的数据而不是整个响应对象
    // 在这里处理返回数据
    const { data } = response
    if (data.code !== 200) {
      // 对响应code做点什么
      if (data.code === 401) {
        // 处理未授权的情况
        // 可能需要重定向到登录页面或者其他操作
      }
      console.error('Error:', data.message)
      return Promise.reject(newError(data.message || 'Error'))
    } else {
      return data
    }
  },
  error => {
    console.log(error)
    return Promise.reject(error);
  }
);

export const get = (url, params) => {
  return service.get(url, { params });
};

export const post = (url, data) => {
  return service.post(url, data);
};

export const put = (url, data) => {
  return service.put(url, data);
};

export const delete= (url, data) => {
  return service.delete(url, data);
};

export default service;

1.2. 使用封装后的 Axios

接下来,在你的 Vue 组件或其他地方使用这个封装好的 Axios 实例:

javascript 复制代码
// src/views/MyComponent.vue

<template>
  <div>
    <button @click="fetchData">Fetch Data</button>
    <pre>{{ data }}</pre>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue';
import service from '@/http'; // 引入封装好的 axios 实例

const data = ref('');
async function fetchData() {
  try {
    const response = await axiosInstance.get('/endpoint'); // 替换为你的 API 端点
    data.value = response;
  } catch (error) {
    console.error("Failed to fetch data:", error);
  }
}
</script>

在这个例子中,我们在 MyComponent.vue 中定义了一个按钮,点击后会触发 fetchData 方法,该方法通过封装好的 Axios 实例发起请求,并将返回的数据展示出来。

1.3. 注意事项

通过这种方式,你可以方便地管理和复用 HTTP 请求代码,并且可以根据需要轻松地添加额外的功能,如身份验证和错误处理。

相关推荐
代码搬运媛3 小时前
Jest 测试框架详解与实现指南
前端
counterxing4 小时前
我把 Codex 里的 Skills 做成了一个 MCP,还支持分享
前端·agent·ai编程
wangqiaowq4 小时前
windows下nginx的安装
linux·服务器·前端
之歆5 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
发现一只大呆瓜5 小时前
Vite凭什么这么快?3分钟带你彻底搞懂 Vite 热更新的幕后黑手
前端·面试·vite
Maimai108085 小时前
React如何用 @microsoft/fetch-event-source 落地 SSE:比原生 EventSource 更灵活的实时推送方案
前端·javascript·react.js·microsoft·前端框架·reactjs·webassembly
candyTong5 小时前
Claude Code 的 Edit 工具是怎么工作的
javascript·后端·架构
kyriewen7 小时前
产品经理把PRD写成“天书”,我用AI半小时重写了一遍,他当场愣住
前端·ai编程·cursor
humcomm7 小时前
元框架的工作原理详解
前端·前端框架
canonical_entropy7 小时前
Attractor Before Harness: AI 大规模开发的方法论
前端·aigc·ai编程