vue3+ts+vite中封装axios,使用方法从0到1

一、安装axios

npm install axios @types/axios --save

二、配置代理vite.config.ts,如果没有需要新建该文件

module.exports = {
   
  server: {
   
    proxy: {
   
      '/api': {
   
        target: 'http://localhost:5000', // 设置代理目标
        changeOrigin: true, // 是否改变请求源地址
        rewrite: (path) => path.replace(/^\/api/, '') // 将 /api 替换为空字符串
      }
    }
  }
};

三、新建utils文件夹,在utils文件夹下新建http.ts文件和methods.ts,如图:

在这里插入图片描述
http.ts文件内容:

import axios from 'axios';
import type  {
    AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';

// 创建axios实例
const instance = axios.create({
   
   baseURL: '/api', // 设置API的基础URL
});

// 请求拦截器
instance.interceptors.request.use(
   (config: AxiosRequestConfig):any => {
   
      // 可在请求发送前对config进行修改,如添加请求头等
      const headers = config.headers || {
   };
      headers['Authorization'] = 'Bxxx';
      config.headers = headers;
      return config;
   },
   (error: AxiosError) => {
   
      // 处理请求错误
      return Promise.reject(error);
   }
);

// 响应拦截器
instance.interceptors.response.use(
   (response: AxiosResponse) => {
   
      // 对响应数据进行处理
      return response;
   },
   (error: AxiosError) => {
   
      // 处理响应错误
      return Promise.reject(error);
   }
);


export default instance

methods.ts文件内容:

import instance from './http'

// 封装GET请求
export function get<T>(url: string, params?: any): Promise<T> {
   
   return instance.get<T>(url, {
    params })
      .then(response => response.data)
      .catch(error => {
   
         throw error;
      });
}

// 封装POST请求
export function post<T>(url: string, data?: any): Promise<T> {
   
   return instance.post<T>(url, data)
      .then(response => response.data)
      .catch(error => {
   
         throw error;
      });
}

// put
export function put<T>(url: string, data?: any): Promise<T> {
   
   return instance.put<T>(url, data)
      .then(response => response.data)
      .catch(error => {
   
         throw error;
      });
}
//delete
export function del<T>(url: string): Promise<T> {
   
   return instance.delete<T>(url)
      .then(response => response.data)
      .catch(error => {
   
         throw error;
      });
}

四、新建api文件夹,用于存放接口 结构如下

在这里插入图片描述

api/user.ts 用户相关接口

import {
    get } from '@/utils/methods'
import type {
    UserRequest } from '../types/user.d'

export  function userRequest(params: UserRequest) {
   
   return get('/users', {
    params }); //测试接口
}

types/user.d.ts定义接口ts类型

export interface UserRequest{
   
   pageNum?:number,
   pageSize?:number,
}

五、在vue文件中使用

<script setup lang="ts">
// 导出指定模块
import useStore from '@/store'
import {
    onMounted } from 'vue'
import {
    userRequest } from '@/apis/api/user'
const {
    user } = useStore()
// 获取
user.getUserList()

onMounted(() => {
   
  userRequest({
   }).then((res: any) => {
   
    console.log('res: ', res)
  })
})
</script>

在这里插入图片描述

请求成功测试
在这里插入图片描述

相关推荐

  1. webpack01构建Vue3

    2024-01-12 06:10:05       54 阅读
  2. vue3 学习笔记04 -- axios使用封装

    2024-01-12 06:10:05       26 阅读
  3. 01实现YOLOv3

    2024-01-12 06:10:05       31 阅读
  4. vue3 axios二次封装

    2024-01-12 06:10:05       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-12 06:10:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-12 06:10:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-12 06:10:05       82 阅读
  4. Python语言-面向对象

    2024-01-12 06:10:05       91 阅读

热门阅读

  1. 数据结构-树(C++)

    2024-01-12 06:10:05       61 阅读
  2. Wargames与bash知识14

    2024-01-12 06:10:05       57 阅读
  3. Spark: 检查数据倾斜的方法以及解决方法总结

    2024-01-12 06:10:05       53 阅读
  4. 探索计算机网络:应用层的魅力

    2024-01-12 06:10:05       62 阅读
  5. Linux 命令解释程序(shell)的模拟实现

    2024-01-12 06:10:05       48 阅读
  6. 初识C#语言

    2024-01-12 06:10:05       58 阅读
  7. Nacos:发现微服务的未来

    2024-01-12 06:10:05       52 阅读
  8. Docker容器,使用 Docker 做些什么

    2024-01-12 06:10:05       58 阅读
  9. LeetCode_5_中等_最长回文子串

    2024-01-12 06:10:05       56 阅读