Vue3:Axios配置及使用

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 => {//根据后端约定执行相关 这里是判断开发/线上环境 存储添加tokenlet 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 => {//根据后端约定状态判断执行 这里是判断状态移除tokenif(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.jsdevServer: {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.jsimport { 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_SIGNlet params = {}proxy.$milliaAxios.post(baseUrl, params).then(response => {console.log(response.data.data.data)})
}onMounted(() => {getListData();})
</script>

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dubbo与seata集成

1.seata是什么? Seata 是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 2.seata的注解 GlobalTransactional&#xff1a;全局事务注解&#xff0c;添加了以后可实现分布式事务的回滚和提交&#xff0c;用法与spring…

小白兼职做抖店,一个月能做到5000利润吗?抖店现状问题解答

我是王路飞。 全职状态下做抖店的话&#xff0c;精细化操作的单店月利润保守数据在10000-30000&#xff08;该数据来自醒醒团队内部学员一般水平下月营收数据均值&#xff0c;仅供参考&#xff09; 但如果是新手小白&#xff08;没有电商经验&#xff09;&#xff0c;且是兼职…

公众号开发

需求&#xff0c;用户在小程序内识别公众号二维码。打卡公众号点击签到小程序内赠送对应金币。 首先需要在配置公众号基本配置。 对应后端代码 public function gzh(){//获取参数$get_data $this->request->request();$signature $get_data["signature"];$…

python_selenium零基础爬虫学习案例_知网文献信息

案例最终效果说明&#xff1a; 去做这个案例的话是因为看到那个博主的分享&#xff0c;最后通过努力&#xff0c;我基本实现了进行主题、关键词、更新时间的三个筛选条件去获取数据&#xff0c;并且遍历数据将其导出到一个CSV文件中&#xff0c;代码是很简单的&#xff0c;没有…

小红书违禁词判断标准,怎么看有没有敏感词

每个平台为了创造良好的社区环境&#xff0c;都会制定相应的社区管理准则&#xff0c;账号一旦出现违规行为&#xff0c;账号的相关内容会被限流&#xff0c;严重者&#xff0c;不给予展示或封禁。今天来马文化传媒和大家分享下小红书违禁词判断标准&#xff0c;怎么看有没有敏…

参数小,性能强!开源多模态模型—TinyGPT-V

安徽工程大学、南洋理工大学和理海大学的研究人员开源了多模态大模型——TinyGPT-V。 TinyGPT-V以微软开源的Phi-2作为基础大语言模型&#xff0c;同时使用了视觉模型EVA实现多模态能力。尽管TinyGPT-V只有28亿参数&#xff0c;但其性能可以媲美上百亿参数的模型。 此外&…

Element+vue3.0 tabel合并单元格span-method

Elementvue3.0 tabel合并单元格 span-method :span-method"objectSpanMethod"详解&#xff1a; 在 objectSpanMethod 方法中&#xff0c;rowspan 和 colspan 的值通常用来定义单元格的行跨度和列跨度。 一般来说&#xff0c;rowspan 和 colspan 的值应该是大于等于…

LeetCode 94. 二叉树的中序遍历

94. 二叉树的中序遍历 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2] 示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[] 示例 3&#xff1a; 输入&…

入门实战丨Python小游戏经典案例

文章目录 写在前面判断与循环小游戏猜数游戏龙的世界 写在后面 写在前面 本期内容&#xff1a;两个个简单的Python小游戏入门案例。 实验需求&#xff1a;python 实验目标&#xff1a;掌握基本的判断与循环语句。 判断与循环 判断与循环是编程中非常重要的两个概念&#x…

私域新手必看:这可能是你最快速的入门指南!

一、认知层&#xff1a;为什么必须做私域&#xff1f; 了解这个问题&#xff0c;必须得观察一下中国现状。根据中国互联网络信息中心&#xff08;CNNIC&#xff09;发布第48次《中国互联网络发展状况统计报告》显示&#xff0c;截至 2021 年 6 月&#xff1a; 而典型电商平台的…

解决方案|镭速助力汽车行业实现数据高速传输数字化进程

在新一代信息技术驱动的数字经济时代&#xff0c;数据已然成为新型生产要素&#xff0c;是国家基础性资源和战略性资源&#xff0c;在汽车市场全球化背景下&#xff0c;产品、数据跨境、区域协同将成为车企未来常态。 1、数字时代&#xff0c;车企数据管理面临新课题 汽车产业…

muduo网络库剖析——时间Timestamp类

muduo网络库剖析——时间Timestamp类 前情从muduo到my_muduo 概要框架与细节成员函数使用方法 源码结尾 前情 从muduo到my_muduo 作为一个宏大的、功能健全的muduo库&#xff0c;考虑的肯定是众多情况是否可以高效满足&#xff1b;而作为学习者&#xff0c;我们需要抽取其中的…