详解Vue3使用axios的配置教程


Posted in Vue.js onApril 29, 2022

axios中文网站:axios-http.com/zh/

一、安装axios

npm install axios --save

二、配置axios,添加拦截器

在src目录下新建一个request文件夹,在里面新建index.ts(或者.js)文件,编辑代码如下:

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

// 添加请求拦截器
service.interceptors.request.use(
	function (config) {
		// 在发送请求之前做些什么
		return config
	},
	function (error) {
		// 对请求错误做些什么
		console.log(error)
		return Promise.reject(error)
	}
)

// 添加响应拦截器
service.interceptors.response.use(
	function (response) {
		console.log(response)
		// 2xx 范围内的状态码都会触发该函数。
		// 对响应数据做点什么
		// dataAxios 是 axios 返回数据中的 data
		const dataAxios = response.data
		// 这个状态码是和后端约定的
		const code = dataAxios.reset
		return dataAxios
	},
	function (error) {
		// 超出 2xx 范围的状态码都会触发该函数。
		// 对响应错误做点什么
		console.log(error)
		return Promise.reject(error)
	}
)
export default service

三、使用axios发送请求

在src目录下新建一个apis文件夹,这里面放入今后所有的请求文件,例如新建一个请求用户信息的接口user.ts,代码如下:

// 导入axios实例
import httpRequest from '@/request/index'

// 定义接口的传参
interface UserInfoParam {
	userID: string,
	userName: string
}

// 获取用户信息
export function apiGetUserInfo(param: UserInfoParam) {
    return httpRequest({
		url: 'your api url',
		method: 'post',
		data: param,
	})
}

接着在具体业务页面里使用这个请求,例如:

<script setup lang="ts">
import { onMounted } from 'vue'
import { apiGetUserInfo } from '@/apis/user'
function getUserInfo() {
	const param = {
		userID: '10001',
		userName: 'Mike',
	}
	apiGetUserInfo(param).then((res) => {
		console.log(res)
	})
}
onMounted(() => {
	getUserInfo()
})
</script>

附:Vue3 中全局引入 axios

main.js中

import axios from 'axios'
const app = createApp(App) // 将默认改写为这样
app.provide('$axios', axios)

组件内使用axios(compositionAPI)

<script setup>
    import { inject } from 'vue'
    const $axios = inject('$axios')
    $axios.get('https://api.github.com/users').then((resp) => {    
      console.log(resp.data)
    }).catch((err) => {
      console.log(err)
    })
</script>

总结

到此这篇关于Vue3使用axios的配置的文章就介绍到这了!


Tags in this post...

Vue.js 相关文章推荐
vue图片裁剪插件vue-cropper使用方法详解
Dec 16 Vue.js
vue中使用echarts的示例
Jan 03 Vue.js
vue调用微信JSDK 扫一扫,相册等需要注意的事项
Jan 03 Vue.js
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 Vue.js
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 Vue.js
vue完美实现el-table列宽自适应
May 08 Vue.js
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 Vue.js
分享一个vue实现的记事本功能案例
Apr 11 Vue.js
Vue OpenLayer测距功能的实现
Apr 20 Vue.js
vue 自定义组件添加原生事件
Apr 21 Vue.js
Vue Element plus使用方法梳理
Dec 24 Vue.js
vue生命周期钩子函数以及触发时机
Apr 26 #Vue.js
vue里使用create, mounted调用方法
vue elementUI批量上传文件
Apr 26 #Vue.js
vue.js 使用原生js实现轮播图
Apr 26 #Vue.js
如何vue使用el-table遍历循环表头和表体数据
vue 把二维或多维数组转一维数组
Apr 24 #Vue.js
Vue OpenLayer 为地图绘制风场效果
Apr 24 #Vue.js
You might like
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
PHP中上传多个文件的表单设计例子
2014/11/19 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
2007/04/12 Javascript
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
基于jquery &amp; json的省市区联动代码
2012/06/26 Javascript
Jquery同辈元素选中/未选中效果的实例代码
2013/08/01 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
利用Vue实现移动端图片轮播组件的方法实例
2017/08/23 Javascript
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
Python采用raw_input读取输入值的方法
2014/08/18 Python
Python正则表达式经典入门教程
2017/05/22 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
python实现微信定时每天和女友发送消息
2019/04/29 Python
python代码实现将列表中重复元素之间的内容全部滤除
2020/05/22 Python
Python3爬虫关于代理池的维护详解
2020/07/30 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2012/05/24 面试题
无故旷工检讨书
2014/01/26 职场文书
工作收入证明模板
2015/06/12 职场文书
Redis实战高并发之扣减库存项目
2022/04/14 Redis