Vue3:Axios配置及使用

news2024/11/18 6:04:33

Axios官方

一、安装:

//使用 npm:
$ npm install axios

//使用 bower:
$ bower install axios

//使用 yarn:
$ yarn add axios

在package-lock.json文件可以查看axios版本

二、配置:

milliaAxios.js 配置axios

import axios from 'axios'
// 创建一个 axios 实例
const milliaAxios = axios.create({
	timeout: 60000, // 请求超时时间毫秒
	withCredentials: false, // 异步请求携带cookie
	//headers: {
	//	// 设置后端需要的传参类型
	//	'Content-Type': 'application/json',
	//	'token': 'your token',
	//	'X-Requested-With': 'XMLHttpRequest',
	//},
})

//拦截器 请求拦截 
milliaAxios.interceptors.request.use(config => {

  //根据后端约定执行相关 这里是判断开发/线上环境 存储添加token
  let token;
  if(process.env.NODE_ENV==='development'){
    token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2NzM3NDIwOTMsIm5iZiI6MTY3Mzc0MjA5MywiZXhwIjoxNzA1Mjc4MDkzLCJkYXRhIjp7InVzZXJpZCI6Mn19.0lwikSQuFVn8Mdou1gsFpA57XT1DDneFveAe5rbsGsk"
  }else if(process.env.NODE_ENV==='production'){
    token = localStorage.getItem('milliaToken_20230612');
  }else{
    token = localStorage.getItem('milliaToken_20230612');
  }
  //判断是否存在token,根据后端约定在header的authorization都加上token 
  if(token){
    config.headers.authorization = token
  }
  //根据后端约定执行相关 结束

  return config;
}, error => {
  console.log(error)
  return Promise.reject(error);
});

//拦截器 响应拦截
milliaAxios.interceptors.response.use(response => {

  //根据后端约定状态判断执行 这里是判断状态移除token
  if(response.data.status&&response.data.status==-98){
    localStorage.removeItem('milliaToken_20230612');
    console.log(response)
  }else{
    return response
  }
  //根据后端约定状态判断执行 结束

}, error =>{
    return Promise.reject(error.response)
});

export default milliaAxios

api.js 接口基地址及接口路径

 附:vue.config.js配置

export default {
  //接口基地址

  //代理及基地址
  Millia: process.env.NODE_ENV == 'development' ? location.protocol + '//' + location.host + '/milliaApi' : 'http://wx.xxxx.xxxx/xxxx/',
  //其他代理及基地址
  MilliaOther:process.env.NODE_ENV=='development'?location.protocol+'//'+location.host+'/MilliaOtherApi':'http://xxx.xxxxx.xxx.xxx/',



  //后台接口

  //基础接口
  SAVE_SIGN: '/xxx/index/index/',
  //其他接口
  GET_STUDYLIST: '/xxx/other/otherList',
  //其他接口
  GET_COURSEINFO: '/xxxx/other/otherInfo',

}

//vue.config.js

devServer: {
    hot: true, //热加载
    host: 'localhost',
    port: 8080, //端口
    https: false, //false关闭https,true为开启
    open: true, //自动打开浏览器
    proxy: {
      '/milliaApi': {
        target: 'http://xxx.xxxx/xxx/',
        ws: true,
        changeOrigin: true,
        pathRewrite: {
          '^/milliaApi': '/'
        }
      },


      /*其他基地址,项目如对接不同基地址数据且需交互http与https,
      修改public文件夹里的index.html在head中添加
      <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">*/
      '/MilliaOtherApi': {
        target: 'https://xx.xxx.xxxx/xxx',
        ws: true,
        changeOrigin: true,
        pathRewrite: {
          '^/MilliaOtherApi': '/'
        }
      },


    }
  },

api.js里的基地址和代理接口 需同vue.config.js的配置一致,即

三、使用:

main.js全局引入

//main.js

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

const app = createApp(App).use(router).use(store);
app.mount('#app')


/*全局引入引入axios*/
import milliaAxios from "@/milliaApi/milliaAxios.js"
app.config.globalProperties.$milliaAxios = milliaAxios;

//全局引入api
import api from '@/milliaApi/api.js';
app.config.globalProperties.$milliaApi = api


/*配置入页面的限制(router.beforeEach进入页面前/router.afterEach进入页面后) */
router.beforeEach((to,from,next)=>{
  document.body.scrollTop = 0;
  document.documentElement.scrollTop = 0;
  window.pageYOffset = 0;
  if (to.meta.title) {
    document.title = to.meta.title
  }
  next();
});
router.afterEach((to, from) => {
});

 App.vue

<template>
<router-view v-slot="{ Component, route }">
<keep-alive>
<component :is="Component" :key="route.name" v-if="route.meta.keepAlive"/>
</keep-alive>
<component :is="Component" :key="route.name" v-if="!route.meta.keepAlive"/>
</router-view>
</template>
<script setup>
import { useStore } from 'vuex';
import api from '@/milliaApi/api.js';
import milliaAxios from "@/milliaApi/milliaAxios"

let params = {}
let baseUrl = api.Millia + api.SAVE_SIGN
milliaAxios.post(baseUrl,params).then(response => {
  console.log(response.data.data)
})

</script>

other.vue

<template>
<div>

这是其他页

</div>
</template>
<script setup>
import { defineComponent, getCurrentInstance, ref, reactive, computed, onMounted, onActivated, onDeactivated} from 'vue';
import { useStore } from 'vuex';

//使用vue的getCurrentInstance 方法获取当前组件实例
const { proxy } = getCurrentInstance()
//获取vuex数据
let store = useStore();


//数据获取
const getListData = () => {
  let baseUrl = proxy.$milliaApi.Millia + proxy.$milliaApi.SAVE_SIGN
  let params = {}
  proxy.$milliaAxios.post(baseUrl, params).then(response => {
    console.log(response.data.data.data)
  })
}


onMounted(() => {
  getListData();

})
</script>

附:关于Axios发请求(get或post)数据参数问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1371759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI老照片修复-Bringing-Old-Photos-Back-to-Life

&#x1f3e1; 个人主页&#xff1a;IT贫道-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;私聊博主加WX好友&#xff0c;获取更多资料哦~ &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. AI老照片修复原理-…

AP5153 低压差 线性降压恒流IC 手电筒LED电源驱动

AP5153 是一种 PWM 调光的、低压 差的 LED 线性降压恒流驱动器。 AP5153 仅需要外接一个电阻和一个 NMOS 管就可以构成一个完整的 LED 恒 流驱动电路&#xff0c; 调节该外接电阻就可以调节 输出电流&#xff0c;输出电流可调范围为 20mA 到 3.0A。 AP5153 还可以通过在 DIM…

怎么修改照片尺寸?来分享3款实用的工具!

在当今的自媒体时代&#xff0c;照片是吸引读者眼球的重要元素之一。有时候&#xff0c;我们需要在不同的平台上传照片&#xff0c;但不同的平台对照片的尺寸要求却不尽相同。为了满足这些要求&#xff0c;我们经常需要修改照片的尺寸。那么&#xff0c;如何快速、准确地修改照…

Linux内核之红黑树详解(2)

该博客结合了维基百科、博客和一些其他的资料&#xff0c;按照理解整理的&#xff0c;如有错误&#xff0c;欢迎指正。 1、创建红黑树&#xff1a; 在实现插入、删除等操作之前&#xff0c;需要先创建一棵红黑树&#xff0c;返回的是红黑树的根结点&#xff1a; RBRoot* crea…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷⑤

2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷5 目录 需要竞赛软件包环境以及备赛资源可私信博主&#xff01;&#xff01;&#xff01; 2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷5 模块一 …

《MyBatis》--多数据源使用实现--超级详细!!!!

阿丹-需求/场景&#xff1a; 在项目中可能要使用到几个数据源&#xff0c;所以本文章解决一个项目中多个数据源的方式。使用简单的配置和注解来实现。 适用于在确定的数据源的场景下。 实现&#xff1a; 三个核心&#xff1a; 构造DataSource、SqlSessionFactory、SqlSessio…

TS 36.322 V12.0.0-过程

​本文的内容主要涉及TS 36.322&#xff0c;版本是C00&#xff0c;也就是V12.0.0。

机器之心 AI 技术--人工智能助力个性化视频实战经验分享(文末送书)

【清华社&机器之心】视频生成前沿研究与应用特别活动 在视频生成即将迎来技术和应用大爆发之际&#xff0c;为了帮助企业和广大从业者掌握技术前沿&#xff0c;把握时代机遇&#xff0c;机器之心AI论坛就将国内的视频生成技术力量齐聚一堂&#xff0c;共同分享国内顶尖力量…

100V耐压 LED恒流驱动芯片 SL2516D兼容替换LN2516车灯照明芯片

SL2516D LED恒流驱动芯片是一款专为LED照明设计的高效、高精度恒流驱动芯片。与LN2516车灯照明芯片兼容&#xff0c;可直接替换LN2516芯片&#xff0c;为LED车灯照明提供稳定、可靠的电源解决方案。 一、SL2516D LED恒流驱动芯片的特点 1. 高效率&#xff1a;SL2516D采用先进的…

【OpenCV学习笔记06】- 制作使用轨迹条控制的调色板

内容 学习将轨迹栏绑定到 OpenCV 窗口。你将学习这些函数&#xff1a;cv.getTrackbarPos(), cv.createTrackbar() 等等。 调色板代码 这里&#xff0c;我们将创建用以显示指定颜色的简单程序。 你有一个显示颜色的窗口和三个轨迹栏&#xff0c;用来指定 B&#xff0c;G&…

师傅带练|在线实习项目,提供实习证明

八大项目&#xff1a;某实习网站招聘信息采集与分析&#xff08;Python数据采集与分析&#xff09; 股票价格形态聚类与收益分析&#xff08;Python金融分析&#xff09; 某平台网络入侵用户自动识别&#xff08;Python机器学习&#xff09; 某平台广东省区采购数据分析&…

信号-进程间通信

信号 1. 信号概述 在 Linux 操作系统中&#xff0c;信号是一种进程间通信的机制&#xff0c;用于通知进程发生了某个事件。信号可以由内核、其他进程&#xff0c;或者进程自身发送。每个信号都对应一个特定的事件或异常&#xff0c;例如进程终止、CtrlC 中断等。 本质上是一…

“To-Do Master“ GPTs:重塑任务管理的趣味与效率

有 GPTs 访问权限的可以点击链接进行体验&#xff1a;https://chat.openai.com/g/g-IhGsoyIkP-to-do-master 部署私人的 To-Do Master 教程&#xff1a;https://github.com/Reborn14/To-Do-Master/tree/main 引言 在忙碌的日常生活中&#xff0c;有效地管理日常任务对于提高生…

【makedown自带语法技巧】

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

从虚拟到现实:数字孪生驱动智慧城市可持续发展

随着科技的飞速发展&#xff0c;智慧城市已经成为未来城市发展的重要趋势。数字孪生技术作为智慧城市建设中的关键技术之一&#xff0c;正在发挥着越来越重要的作用。本文将探讨数字孪生如何从虚拟走向现实&#xff0c;驱动智慧城市的可持续发展。 一、数字孪生技术&#xff1…

AIGC ChatGPT4 教你如何制作动态图表,完整代码

图表效果如下: 根据选择不同的年份图表会进行自动显示。 这样的效果直接可以用ChatGPT 4来完成。 代码单独复制出来。 分为两部分a.html与a.js HTML部分如下: <!DOCTYPE html> <html><head><meta charset="utf-8"><title>EChart…

华为mstp、vrrp、ospf、isis、bgp等综合一起排错

最终实现左边私网和右边私网全部ping通 SW1 vlan batch 12 34 stp region-configuration //mstp配置 region-name test instance 12 vlan 12 instance 34 vlan 34 active region-configuration interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass …

烟火检测AI边缘计算智能分析网关V4在安防项目中的应用及特点

一、行业背景 随着社会和经济的发展&#xff0c;公共安全和私人安全的需求都在不断增长。人们需要更高效、更准确的安防手段来保障生命财产安全&#xff0c;而人工智能技术正好可以提供这种可能性&#xff0c;通过智能监控、人脸识别、行为分析等手段&#xff0c;大大提高了安防…

firewall防火墙(二)

一、IP伪装与端口转发&#xff1a; 当用户数据包经过NAT设备时&#xff0e;NAT设备将源地址替换为公网P地址&#xff0e;而返回的数据包就可以被路由&#xff0c;NAT技术一般都是在企业边界路由器或者防火墙上来配置. Firewaild支持两种类型的NAT;P地址伪装和端口转发. 1.1 I…

【云计算】云计算概述

1. 云计算概述 1.1 云计算的定义 美国国家标准与技术研究院(NIST)定义 云计算是一种按使用量付费的模式&#xff0c;这种模式提供可用的、便捷的、按需的网络访问&#xff0c;进入可配置的计算资源共享池(资源包括网络&#xff0c;服务器&#xff0c;存储&#xff0c;应用软件…