首页 > 其他分享 >vue中axios二次封装【简洁、附代码】+api解耦

vue中axios二次封装【简洁、附代码】+api解耦

时间:2024-08-08 14:54:37浏览次数:15  
标签:axios 请求 service vue 拦截器 getSliders api

reference: https://www.bilibili.com/video/BV1my421h7hK/?share_source=copy_web&vd_source=334dbcc5ec1e90276a3fca594c89e11e

下一篇:继axios二次封装后跨域问题解决——配置代理、环境变量

文章目录


一、axios请求接口

1 下载

npm install axios -S

2 引入

import axios from 'axios'

3 使用

axios.get()
		axios.post()
		axios({
			url:'请求url地址',
			method:"请求的方法",
			data:'post传值方式'
			params:'get传值方式',
		}).then(res=>{
			console.log( res );//后端给前端返回的数据
		})

二、axios二次封装

为什么要进行axios的二次封装+解耦?

// 以下来自官方文档
默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上,例如 https://www.my-app.com/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.my-app.com/my-app/,则设置 publicPath(baseURL) 为 /my-app/

  • 请求的url地址统一管理:譬如在一个项目中需要频繁发起请求获得数据,而请求的接口经常为:【http://testapi.xuexiluxian.cn/XXX/XXX】,即通常只有后面【/XXX/XXX】是变化的,而前面【http://testapi.xuexiluxian.cn】是不变的,如果每次都重复写,不仅麻烦,还不利于项目的维护,所以我们需要给他一个【baseURL:‘http://testapi.xuexiluxian.cn’】,在后续的请求过程中只需要给定后面变化的部分【url:‘/api/slider/getSliders’】即可。
  • 某些接口需要传递headers
  • 可以统一配置请求拦截器+响应拦截器

该【二、】部分在utils/request.js目录下

1. 下载axios

npm install axios -S

2. 引入axios

import axios from 'axios';

3. 创建axios对象

const service = axios.create({
		baseURL:'http://testapi.xuexiluxian.cn'
	});

4. 请求拦截器

在请求拦截器中 ==> 前端给后端发送数据【没有到后端 】

service.interceptors.request.use(config => {
	  console.log( 1 );
	  return config;
	}, error => {
	  Promise.reject(error);
	});

5. 响应拦截器

在响应拦截器中 ==> 后端给前端返回数据【前端到后端了】

	service.interceptors.response.use(
	  (response) => {
	  	return response.data.data;
	  },
	  error => {
	    return Promise.reject(new Error(error.response.data))
	  }
	)
	
	//导出封装好的service,后续只要使用service发送请求就会通过上诉请求拦截器和响应拦截器
	export default service

三、api解耦

为什么要进行api解耦?

在 utils 目录下新建 api 文件夹,在 api 下新建 course.js。

course.js中代码如下:

import request from '@/utils/request'

export function getSliders(){
	return request({
		url:'/api/slider/getSliders'
	})
}

完成后在后续便可以十分简易的设置多个请求如:
在这里插入图片描述

四、使用

在这里 vue2 中使用created钩子,vue3 中使用onMounted钩子调用解耦好的 getSliders 的 api 即可。

vue2: 通常在created钩子中执行异步操作,因为此时数据已经可以被访问,但组件尚未挂载。
vue3: 推荐在onMounted钩子中执行异步操作,因为此时组件已经挂载到DOM,可以进行DOM操作。

<script type="text/javascript">
		import { getSliders } from '@/utils/api/course'
		export default{
		  data (){
		    return {
		      list:[]
		    }
		  },
		  created(){
		    getSliders().then(res=>{
		      console.log( res )
		    })
		  }
		}
		</script>  

标签:axios,请求,service,vue,拦截器,getSliders,api
From: https://blog.csdn.net/Yaki_Duck/article/details/140917132

相关文章

  • 主打一个免费:英智LLM推理API,主流大模型API任你选!
     人工智能(AI)技术的飞速发展已经成为各行各业的关键驱动力,尤其是大语言模型(LLM)正在成为推动下一波技术创新浪潮的颠覆性力量。开发者如何享受LLM带来的红利,创造出优秀的应用?实践证明,使用大语言模型API,可以有事半功倍的效果! 部署过大模型的小伙伴应该都清楚,在本地部署L......
  • 利用vscode-icons-js在Vue3项目中实现文件图标展示
    背景:在开发文件管理系统或类似的项目时,我们常常需要根据文件类型展示对应的文件图标,这样可以提高用户体验。本文将介绍如何在Vue3项目中利用vscode-icons-js库,实现类似VSCode的文件图标展示效果。先看效果:一、引入vscode-icons-js首先,我们需要安装vscode-icons-js库。......
  • vue 项目使用@vue-office/docx word 纯前端v 也支持后端接口方式
    只是做个记录,防止忘记。安装依赖 @vue-office/docxvue2的写法vue3同理自己改造。记得一定放在public文件夹下 下面代码<template> <divstyle="height:100%">  <el-buttontype="primary"@click="downWord">下载文档</el-button>  <vue......
  • 【uniapp】uniapp+vue2微信小程序实现分享功能
    uniapp+vue2做的微信小程序实现分享功能问题描述uniapp+vue2做的微信小程序,发布以后点击右上角三个点,分享小程序的时候,转发和分享按钮都是灰色解决方案转发、分享、复制链接这几个功能需要自己来手动写方法,考虑到每个页面都需要能够实现分享功能,以下我会使用Vue.js的......
  • 基于SpringBoot+MySQL+SSM+Vue.js的校园二手图书交易管理系统(附论文)
    获取见最下方名片信息获取见最下方名片信息获取见最下方名片信息演示视频基于SpringBoot+MySQL+SSM+Vue.js的校园二手图书交易管理系统(附论文)技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+M......
  • 基于SpringBoot+Vue+MySQL的在线网盘系统
    获取见最下方名片信息获取见最下方名片信息获取见最下方名片信息演示视频基于SpringBoot+Vue+MySQL的在线网盘系统技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+SpringBoot文字描述......
  • 从Vue到Element
    Vue-ElementAjax原生AjaxAxios案例Vue项目启动配置端口  开发流程Element快速入门组件表格分页对话框表单案例Vue路由打包部署Ajax原生Ajax1.创建XMLHttpRequestvarxmlHttpRequest=newXMLHttpRequest();2.发送异步请求xml......
  • 零一万物完成数亿美元融资;OpenAI 引入 API 结构化输出功能
    ......
  • springboot+vue农产品商城【程序+论文+开题】-计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和互联网普及率的不断提高,电子商务已成为推动全球经济的重要力量。在农业领域,传统农产品销售模式面临着信息不对称、流通环节多、成本高、效率低下等问题,严重制约了农产品的市场竞争力与农民增收。因此,构建一个......
  • ArcGIS API for JavaScript 3.x 到 4.x 的升级手册
    众所周知,3.x版本主要是构建二维地图,且基本不会再添加新功能;而4.x版本主要是构建于三维地图,与3.x相比并不是简单的升级,基本上就是重写了。所以当我们需要把API从3.x升级到4.x时,应用程序基本上是需要重写的,这里将对API升级过程中涉及到的相关变动进行记录与描述。以下......