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

一、跨域问题解决

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

文件名:vite.congig.js

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

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

javascript 复制代码
  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
javascript 复制代码
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
javascript 复制代码
// 加载 axios
import axios from './http'
const app = createApp(App)
// 全局挂载axios
app.provide('axios', axios)
3.组件中使用
javascript 复制代码
 import { inject } from 'vue'

  const axios = inject('axios')

  // @ts-ignore
 axios.post('/api/users/register', props.registerUser)
相关推荐
小徐_233319 小时前
uni-app 组件库 Wot UI 2.0 发布了,我们带来了这些改变!
前端·微信小程序·uni-app
❀͜͡傀儡师19 小时前
Claude Code 官方弃用 npm 安装方式:原因分析与完整迁移指南
前端·npm·node.js·claude code
知识分享小能手19 小时前
ECharts入门学习教程,从入门到精通,ECharts高级功能(6)
前端·学习·echarts
阿祖zu19 小时前
OpenClaw 入门到放弃:私人 AI 的初代原型机
前端·后端·aigc
ZC跨境爬虫19 小时前
3D地球卫星轨道可视化平台开发 Day15(添加卫星系列模糊搜索功能)
前端·数据库·3d·交互·数据可视化
m0_7381207219 小时前
渗透基础知识ctfshow——Web应用安全与防护(第六 七章)
服务器·前端·安全
Sun子矜19 小时前
Web项目18+项目21
前端
踩着两条虫19 小时前
VTJ:项目模型架构
前端·低代码·ai编程
踩着两条虫20 小时前
VTJ:DSL语言规范
前端·低代码·ai编程
广州华水科技20 小时前
单北斗GNSS在水库形变监测中的应用与优势分析
前端