vue3+vite+js axios引用

server/2024/11/17 10:00:51/

先交代下基础版本:
“node”:“V16.14.1” “vue”: “^3.4.21” “vite”: “^5.2.0”

  1. 安装:npm install axios --save
  2. 在src目录下的utils文件夹创建一个request.js文件(示例代码,仅供参考):
//引入axios请求
import axios from 'axios'
// store
import useUserStore from '@/store/modules/userStore.js'
const store = useUserStore()
const BASE_API=import.meta.env.VITE_APP_BASE_API
// 创建axios实例
const service = axios.create({baseURL: BASE_API, //所有的后端接口请求地址前缀部分(没有后端请求不用写)timeout: 15000 // 请求超时时间,这里15秒//withCredentials: true,// 异步请求携带cookie,true为携带,false为不携带//请求头里面设置通用传参类型/*headers: {//设置后端需要的传参类型'Content-Type': 'application/json','token': 'x-auth-token',//一开始就要token'X-Requested-With': 'XMLHttpRequest',}*/
})// request拦截器
service.interceptors.request.use(config => {const value = JSON.parse(localStorage.getItem('token'));console.log(111, value.token)if (store.token) {config.headers['token'] = store.token // 让每个请求携带自定义token 请根据实际情况自行修改}return config
}, error => {console.log(error)return Promise.reject(error)
})// response拦截器
service.interceptors.response.use(response => {//对数据返回做什么const res = response.dataconst config = response.config// custom 表示自定义if (res.status_code !== 200 && !config.custom) {//   if (res.status_code === 1002) {//     loginOut()//   } else if (loginVerify(res, config)) { // 登录功能验证//     return res//   } else {// Message({//   message: res.status || 'Error',//   type: 'error',//   duration: 5 * 1000// })//   }return Promise.reject(new Error(res.status || 'Error'))} else {if (response.headers['authorization'] || response.headers['Authorization']) {const _token = response.headers['authorization'] || response.headers['Authorization']store.dispatch('user/setToken', _token.split('Bearer ')[1])}return res}},error => {console.log('err' + error) // for debug// Message({//   message: error.message,//   type: 'error',//   duration: 5 * 1000// })return Promise.reject(error)}
)
export default service
  1. src目录下创建一个api斜体样式文件夹,用来存放每个模块的接口请求,类如login.js
import request from '@/utils/request'//示例以application/json格式传参
export function login(data) {return request({url: '/admin/login',method: 'post',data: data})
}//示例在url后面拼接参数传参
export function test(params) {return request({url: '/admin/login',method: 'post',params: params})
}
  1. 使用,类如HelloWorld.vue:
<script setup>
import { login } from '@/api/login.js'
onMounted(() => {login({ phone: 18888888888 }).then(res => {console.log(res)}).catch(res => {console.log(res)})
})
</script>

http://www.ppmy.cn/server/32457.html

相关文章

A+B(输出2)

#include <stdio.h> 2 3int main() { 4 int N, A, B; 5 6 // 读取数据组数 7 scanf("%d", &N); 8 9 // 对于每组数据 10 for(int i 0; i < N; i) { 11 // 读取每组中的两个整数&#xff0c;用空格分隔 12 scanf(…

TWS 蓝牙耳机 ESD EOS保护方案

1. TWS 蓝牙耳机 TWS&#xff08;True Wireless Stereo&#xff09;蓝牙耳机是指没有传统连接线的完全无线耳机&#xff0c;通常由两个分别放置在耳朵中的独立耳机组成&#xff0c;提供立体声音效。这类耳机在近年来越来越受欢迎&#xff0c;因为它们提供了更自由、更便捷的音…

【CAP探索者指南】掌握分布式世界的三角平衡术,一致性、可用性、分区容错性大揭秘!

关注微信公众号 “程序员小胖” 每日技术干货&#xff0c;第一时间送达&#xff01; 引言 在现代的微服务架构中&#xff0c;系统被拆分成了许多小型服务&#xff0c;每个服务可能有自己的数据库。这种架构带来了灵活性和可扩展性&#xff0c;但也引入了新的挑战&#xff0c;…

应用分层和企业规范

目录 一、应用分层 1、介绍 &#xff08;1&#xff09;为什么需要应用分层&#xff1f; &#xff08;2&#xff09;如何分层&#xff1f;&#xff08;三层架构&#xff09; MVC 和 三层架构的区别和联系 高内聚&#xff1a; 低耦合&#xff1a; 2、代码重构 controlle…

力扣例题(接雨水)

链接&#xff1a; . - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 思路&#xff1a; 判断一块地方是否可以接到雨水&#xff0c;只需要判断他是否有左右边界使他可以接到水 左右边界分别为此处左侧的最高点和右侧的最高点 同时此处可接雨水的高度为左右两…

Elasticsearch中【文档查询】DSL语句以及对应的Java实现

目录 全文检索查询 精准查询 布尔查询 排序、分页查询 高亮 地理查询 复合查询 Elasticsearch提供了基于JSON的DSL&#xff08;Domain Specific Language&#xff09;来定义查询。常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有数据&#xff0c;一般测…

抽象类和接口

抽象类和接口在Java等面向对象编程语言中都是非常重要的概念&#xff0c;它们为代码的复用和扩展提供了强大的支持。下面将解释它们的作用&#xff0c;并给出相应的代码示例。 1. 抽象类&#xff08;Abstract Class&#xff09; 抽象类是一种不能被实例化的类&#xff0c;主要…

使用UmcFramework和unimrcpclient.xml连接多个SIP设置的配置指南及C代码示例

使用UmcFramework和unimrcpclient.xml连接多个SIP设置的配置指南及C代码示例 引言1. UniMRCP和UmcFramework简介2. 准备工作3. unimrcpclient.xml配置文件3.1 定义SIP设置3.2 定义MRCP会话配置文件 4. C代码示例5. 测试和验证6. 故障排查7. 结论8. 参考文献 引言 在多媒体通信…