当前位置: 首页 > news >正文

VUE封装axios调用

一、Vue项目配置代理、axios封装和接口调用的实现方案

  1. 首先在项目根目录创建 vue.config.js 配置代理:
module.exports = {devServer: {proxy: {'/api': {  // 代理所有以/api开头的请求target: 'http://your-api-domain.com', // 你的后端接口地址changeOrigin: true, // 允许跨域pathRewrite: {'^/api': '' // 路径重写(去掉/api前缀)}}}}
}
  1. 创建 src/utils/request.js 文件(axios封装):
import axios from 'axios'
import { Message } from 'element-ui' // 按需引入UI组件库的提示组件
import router from '@/router'// 创建axios实例
const service = axios.create({baseURL: process.env.NODE_ENV === 'development' ? '/api' : process.env.VUE_APP_BASE_API, // 根据环境切换timeout: 10000 // 请求超时时间
})// 请求拦截器
service.interceptors.request.use(config => {// 在发送请求之前做些什么(例如添加token)const token = localStorage.getItem('token')if (token) {config.headers['Authorization'] = `Bearer ${token}`}return config},error => {// 对请求错误做些什么return Promise.reject(error)}
)// 响应拦截器
service.interceptors.response.use(response => {// 对响应数据做处理(例如只返回data部分)const res = response.data// 这里根据你的后端接口协议进行修改if (res.code !== 200) {Message.error(res.message || 'Error')return Promise.reject(new Error(res.message || 'Error'))}return res},error => {// 对响应错误做处理if (error.response) {switch (error.response.status) {case 401:Message.error('登录过期,请重新登录')router.push('/login')breakcase 403:Message.error('拒绝访问')breakcase 500:Message.error('服务器错误')breakdefault:Message.error(error.response.data.message || '请求错误')}} else {Message.error('网络连接失败')}return Promise.reject(error)}
)export default service
  1. 创建接口封装文件 src/api/user.js:
import request from '@/utils/request'// 用户登录
export function login(data) {return request({url: '/user/login',method: 'post',data})
}// 获取用户信息
export function getUserInfo(data) {return request({url: '/user/info',method: 'get',params: data})
}// 其他接口...
  1. 在组件中使用封装好的接口:
<template><div><button @click="handleLogin">登录</button></div>
</template><script>
import { login, getUserInfo } from '@/api/user'export default {methods: {async handleLogin() {try {// 调用登录接口const loginRes = await login({username: 'admin',password: '123456'})// 登录成功后获取用户信息const userInfo = await getUserInfo()console.log(userInfo)} catch (error) {console.error('请求失败:', error)}}}
}
</script>
http://www.dtcms.com/a/494942.html

相关文章:

  • python的scikit-image库的功能介绍(亲测)
  • 做go分析的网站第一成品网站超市
  • ArrayList和LinkedList的区别
  • PinWin,一个窗口置顶工具
  • 一键式搜索引擎Hacking工具
  • CasADi:高性能数值优化与自动微分工具库详解
  • 中英文网站建设企业网站列表设计
  • 在 iOS 18 中,控制中心怎样添加应用快捷方式?
  • C++类型转换
  • 【Memory协议栈】Autosar架构下如何加速Fee的切页时间
  • 【C# MVC 前置】异步编程 async/await:从 “卡界面” 到 “秒响应” 的 Action 优化指南(附微软官方避坑清单)
  • WRF-Chem模式编译,排放源制作
  • 网站管理和维护云服务器多少钱一台
  • 做外贸网站效果好吗万网首页
  • JavaWeb前端-Ajax
  • ip rule 策略路由
  • 【Zephyr电源与功耗专题】15_功耗优化测试工具与手段
  • 如何让多模态大模型学会“自动思考”-R-4B训练框架核心设计与训练方法
  • 上海企业网站备案找个网站这么难2021
  • 利用层序遍历建树和打印
  • 分布式专题——47 ElasticSearch搜索相关性详解
  • php 免费企业网站有没有傻瓜式建设网站
  • BeanDefinition 详解
  • 网站开发培训实训设计网站官网狗
  • Custom SRP 13 Color Grading
  • 19.3 《5步语音预处理实战:从噪声抑制到梅尔频谱,让你的ASR识别率飙升!》
  • 网络:3.Socket编程TCP
  • python+uniapp基于微信小程序团购系统
  • 第十章:技术路线:成为“技术扫地僧(4)
  • 嵌入的微信小程序的webview ,操作成功后返回小程序上一页