1.vue3+vite开发中axios使用及跨域问题解决

news/2024/7/10 3:01:51 标签: 前端, vue

一、跨域问题解决

 1.基于vite+vue3配置时,在vite.congig.js文件server项目中添加 proxy代理

  文件名:vite.congig.js

  server: {
    open: true,//启动项目自动弹出浏览器
    port: '3000',
    proxy: {
      '/api': {
        target: 'http://localhost:8000/api/',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '') // 不可以省略rewrite
      }
    }

2.axios封装时设置基本路径baseURL

  const instance = axios.create({
  baseURL:  '/api', // api的base_url import.meta.env.VUE_APP_BASE_API 也可以直接写
  timeout: 10000, // 请求超时时间
  headers: {
    'Content-Type': 'application/json;charset=UTF-8'
  }
}
);

二、provide/inject 实现axios 全区使用

  在main.js中provide

   app.provide('axios', axios)

  在组件内获取

  import { inject } from 'vue'

  const axios = inject('axios')

  axios.post()

具体代码如下:

1.axios封装http.js
import axios,{AxiosRequestConfig,AxiosResponse} from 'axios'
import { ElLoading } from 'element-plus';

let loading:any;
const startLoading = ()=>{
  interface Options {
    lock: boolean;
    text: string;
    background: string;
  };
  const options:Options = {
    lock: true,
    text: "加载中...",
    background: "rgba(0,0,0,0.7)"
  }
  loading = ElLoading.service(options)
}
const endLoading = ()=>{
  loading.close()
}
const instance = axios.create({
  baseURL:  '/api', // api的base_url import.meta.env.VUE_APP_BASE_API 也可以直接写
  timeout: 10000, // 请求超时时间
  headers: {
    'Content-Type': 'application/json;charset=UTF-8'
  }
}
);
// 请求拦截
instance.interceptors.request.use((config:AxiosRequestConfig) =>{
  startLoading(); //  开始loading
  return config
})
// 响应拦截
instance.interceptors.response.use((response:AxiosResponse) =>{
  endLoading(); //  结束loading
  return response;
},error =>{
  return Promise.reject(error)  // 错误提醒
})

export default axios
2.全区应用main.js
// 加载 axios
import axios from './http'
const app = createApp(App)
// 全局挂载axios
app.provide('axios', axios)
3.组件中使用
 import { inject } from 'vue'

  const axios = inject('axios')

  // @ts-ignore
 axios.post('/api/users/register', props.registerUser)


http://www.niftyadmin.cn/n/4947074.html

相关文章

VMware虚拟机Ubuntu无法连接网络的解决方法

一、解决办法 网络适配器设置 终端依次执行下面命令即可 sudo nmcli networking off sudo nmcli networking onsudo service network-manager start #或者 sudo service NetworkManager start成功出现这个图标,即代表网络连接成功。

JAVA基础知识(一)——Java语言描述、变量和运算符

TOC(Java语言描述、变量和运算符) 一、JAVA语言描述 1.1 java语言描述 JDK、JRE、jVM三者之间的关系,以及JDK、JRE包含的主要结构有哪些? JDKJre java的开发工具(javac.exe java.exe javadoc.exe) jre jvmjava的核心类库 为什…

python中迭代器的具体使用

迭代器在实际项目中可以用于遍历各种序列,例如列表、元组、字符串等。以下是一些常见的应用场景: 1.遍历文件内容:可以使用open()函数打开文件,然后使用readlines()方法读取所有行并返回一个列表。接着,可以将该列表转…

【Selenium学习】环境搭建 API学习

目录 一、javaSelenium的环境搭建? 二、认识Selenium 1、什么是自动化? 2、什么是Selenium? (重点) 3、selenium的工作原理?(重点) 三、Selenium操作元素API(重点) 第一部分&#…

http学习笔记3

第 11 章 Web 的攻击技术 11.1 针对 Web 的攻击技术 简单的 HTTP 协议本身并不存在安全性问题,因此协议本身几乎不会成为攻击的对象。应用 HTTP 协议的服务器和客户端,以及运行在服务器上的 Web 应用等资源才是攻击目标。目前,来自互联网的攻…

React 调试开发插件 React devtools 的使用

可以在谷歌扩展应用商店里获取这个插件。如果不能访问谷歌应用商店,可以点此下载最新版 安装插件后,控制台出现 “Components” 跟 “Profiler” 菜单选项。 查看版本,步骤: 下面介绍 react devtools 的使用方式。 在 Component…

机器学习编译系列---张量程序抽象

机器学习编译系列---张量程序抽象 1. 张量函数概念的引入与抽象的必要性 1. 张量函数概念的引入与抽象的必要性 在文章机器学习编译系列—概述中提到,机器学习编译的一个很重要操作是做等价变换来减少内存或者提高运行效率。变换是以“元张量函数”(private tensor …

LeetCode Schedule

LeetCode Schedule 动态规划70. 爬楼梯509. 斐波那契数1137. 第 N 个泰波那契数746. 使用最小花费爬楼梯198. 打家劫舍 动态规划 70. 爬楼梯 题目🌸: 一次可以爬 1 或 2 个台阶,请问有多少种方法到达第 n 个台阶. 思路🌷: 动态规划. 状态定…