vue3和vite项目的axios的配置封装(含proxy跨域)

这篇具有很好参考价值的文章主要介绍了vue3和vite项目的axios的配置封装(含proxy跨域)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

创建好vite项目

安装axios模块

npm install axios

在src同级目录创建uitls/http.js,加入以下内容

import axios from "axios";
import { Toast } from "vant";
// console.log("import.meta.env", import.meta.env.VITE_API_URL);

//创建一个新的请求实例instance,instance.的用法和axios.的用法一致,可以使用instance({})、instance.get()、instance.post()
const instace = axios.create({
  baseURL: import.meta.env.VITE_API_URL, //默认配置(这里不要用process.env,个人百度这个在vite中被废弃掉了,属性名必须以VITE_API_开头,否则 import.meta.env检测不到)
  timeout: 5000, //超时时间
});

//配置请求拦截器,在请求之前的数据处理,比如在请求头添加token,所有的请求都会经过拦截器
instace.interceptors.request.use(
  //config:该参数表示当前请求的配置对象
  (config) => {
    //例如:
    //在请求头统一添加token
    //或者请求之前显示lodding图标(这里只演示这个)
    //这里是vant组件库的loadding,安装和配置请查看此文档的vant组件库的配置https://blog.csdn.net/weixin_68658847/article/details/129331162
    Toast.loading({
      duration: 0,
      message: "正在努力加载",
    });
    return config;
  },
  (err) => {
    Toast.clear(); //请求失败关闭loadding
    return Promise.reject(err); //将错误消息挂到promise的失败函数上
  }
);

//配置响应拦截器
// 响应拦截器:在请求响应之后对数据处理,比如:登录失败、请求数据失败的处理
// instance.interceptors.response.use(response=>{l}, err=>{});
// 响应成功:执行回调函数1;响应失败,执行回调函数2
instace.interceptors.response.use(
  (response) => {
    Toast.clear(); //响应成功关闭loadding
    return response; //这里的response就是请求成功后的res , response.data即是请求成功后回调函数内的参数res.data
  },
  (err) => {
    Toast.clear(); //响应失败关闭loadding
    return Promise.reject(err); //将错误消息挂到promise的失败函数上
  }
);

//封装请求的api
const callapi = (method = "GET", url, data = {}) => {
  return instace({
    method,
    url,
    params: method === "GET" ? data : {},
    data: method === "POST" ? data : {},
  });
};
//封装GET请求函数
export const getapi = (url, data) => callapi("GET", url, data);
export const postapi = (url, data) => callapi("POST", url, data);

配置开发环境(在src同级下创建.env.development),加入以下基础路径

//有个注意点:vite项目的前缀必须以VITE_API_开头,否则 import.meta.env检测不到
VITE_API_URL = /douyu

配置proxy代理(在vite.config.js里面配置)

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { fileURLToPath, URL } from "node:url";
// https://vitejs.dev/config/
export default defineConfig({

//直接看下半部分,下半部分才是配置代理的
  plugins: [vue()],
  // 路径别名
  resolve: {
    alias: {
      "@": fileURLToPath(new URL("./src", import.meta.url)),
    },
    extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"],
  },
  transpileDependencies: true,
  lintOnSave: false,


//下面是配置代理的所有内容
//这里用server,和vue之前配置的有所不同
  server: {
    //方式二:设置多个代理
    proxy: {
      //这个路径为http://192.168.1.182:3000/douyu/wgapi/vod/front/vodrank/getTagVideos
      "/douyu": {
        //target是代理的目标路径
        target: "http://open.douyucdn.cn",
        changeOrigin: true, //必须要开启跨域
        //pathRewrite重写请求的路径,实际请求的路径没有代理标识douyu,需要把斗鱼重置为空字符串
        rewrite: (path) => path.replace(/\/douyu/, ""), // 路径重写
      },
    },
  },
});

配置请求(根目录下创建api/index.js),放入以下内容

import { getapi,postapi } from "@/uitl/http";

export const getroomapi = (data) => getapi("/api/RoomApi/live", data);
export const getdetailapi = (room_id) => getapi("/api/RoomApi/room/" + room_id);
export const getgame = () => getapi("/api/RoomApi/game");
export const getroom = (room_id) => getapi("/api/RoomApi/live/" + room_id);

使用方式(在单文件中)

<script setup>
import { getroomapi } from "@/api/index.js";
import { onMounted } from "vue";
onMounted(() => {
  getroomapi().then((res) => {
    console.log("c", res);
  });
});
</script>

<template></template>

<style scoped lang="scss"></style>

效果图

vue3和vite项目的axios的配置封装(含proxy跨域),vue,javascript,前端,java文章来源地址https://www.toymoban.com/news/detail-622789.html

到了这里,关于vue3和vite项目的axios的配置封装(含proxy跨域)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3创建项目(四)axios封装及接口配置

    项目结构:  目录  🍉🍉🍉index.ts  🍉🍉🍉 api.ts 看完需要预计花费10分钟。 请求拦截器与响应拦截器  阅读下面代码需先了解以下内容:         请求拦截器:     请求拦截器的作用是在请求发送前进行一些操作,例如在每个请求体里加上token,每次请求携带token传给

    2024年02月03日
    浏览(36)
  • Vite+Vue3项目如何获取环境配置,并解决前端跨域问题

    根目录新建.env.development和.env.production文件 package.json配置启动参数 vite命令启动项目时,指定mode参数,加载vite.config.ts文件。 配置代理 在vite.config.ts中配置代理 配置vite-plugin-html 通过vite-plugin-html组件,可以将配置文件中的数据,绑定到index.html中,可以实现不同环境的页面ti

    2024年02月19日
    浏览(39)
  • Vite 配置代理 Proxy,Vue配置代理,解决前端跨域

    我们在做项目的时候经常会遇到跨域的问题,之所以会出现跨域问题是因为浏览器的同源策略,即协议、域名、端口需要一致,才可以访问服务端的资源。当一个请求地址(服务端的地址)的协议、域名、端口三者之间任意一个与当前页面地址(前端页面地址)不同即为跨域

    2024年02月17日
    浏览(43)
  • 1.vue3+vite开发中axios使用及跨域问题解决

    一、跨域问题解决  1.基于vite+vue3配置时,在vite.congig.js文件server项目中添加 proxy代理   文件名:vite.congig.js 2.axios封装时设置基本路径baseURL 二、provide/inject 实现axios 全区使用   在main.js中provide    app.provide(\\\'axios\\\', axios)   在组件内获取   import { inject } from \\\'vue\\\'   const axios = i

    2024年02月12日
    浏览(30)
  • vue3+vite的axios的封装与全局使用

    1.安装axios 使用npm 或 yarn 安装axios到项目中 // 使用pnpm 安装   pnpm install axios // 使用npm 安装   npm install axios // 使用yarn 安装  yarn add axios axios是一个基于Promise的HTTP请求库,支持Promise API、可以拦截请求和响应、可以转换请求和响应数据、支持取消请求、可以自动转换JSON数据

    2024年02月02日
    浏览(48)
  • vue3+ts+vite中封装axios,使用方法从0到1

    http.ts文件内容: methods.ts文件内容: api/user.ts 用户相关接口 types/user.d.ts定义接口ts类型 请求成功测试

    2024年02月02日
    浏览(36)
  • vue3配置代理--[vite] http proxy error

    跨域请求数据, 浏览器 同源策略的保护机制, 通过 proxy 实现跨域请求数据; 如果直接 postman 请求是不会报错的, vue3 报错是因为经过浏览器了, 数据其实返回了, 但是别浏览器的同源策略屏蔽了。 本地调试, 后端使用** http://localhost:8081 作为接口地址, 报错 [vite] http proxy error ** 可

    2024年02月08日
    浏览(42)
  • axios封装—vue3项目

    前言 axios的API很友好,可以在项目中直接使用。但是在大型项目中,http请求很多,且需要区分环境, 每个网络请求有相似需要处理的部分,会导致代码冗余,破坏工程的可维护性,扩展性,所以需要对axios请求进行相应的封装 正文 安装axios 封装请求api 1. 在src目录下新建个

    2024年02月07日
    浏览(28)
  • SpringBoot&Vue&EmementUI前后端分离整合、统一封装axios、跨域配置

    🧑‍💻作者名称:DaenCode 🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开发。技术尚浅,闭关学习中······ 😎人生感悟:尝尽人生百味,方知世间冷暖。

    2024年02月09日
    浏览(30)
  • vue3 vite配置跨域以及不生效问题

    1. 在vite.config中添加配置 2. 在.env.development中配置开发环境下的基地址(没有该文件夹手动新建) 3. 配置axios的基地址 最后:         我之前是犯过一个错误的, 导致我搞了半天都没搞好... 就是配置完vite.config, 那个/ccc后缀是接口没有的自己加的, 那么就要手动加上去了...     

    2024年02月11日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包