详解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实现下载文件流完整前后端代码
Nov 17 Vue.js
基于vue项目设置resolves.alias: '@'路径并适配webstorm
Dec 02 Vue.js
vue3自定义dialog、modal组件的方法
Jan 04 Vue.js
vue自定义组件实现双向绑定
Jan 13 Vue.js
Vue中引入svg图标的两种方式
Jan 14 Vue.js
学习 Vue.js 遇到的那些坑
Feb 02 Vue.js
Vue基本指令实例图文讲解
Feb 25 Vue.js
Vue2.x-使用防抖以及节流的示例
Mar 02 Vue.js
vue+spring boot实现校验码功能
May 27 Vue.js
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 Vue.js
vue项目配置sass及引入外部scss文件
Apr 14 Vue.js
vue el-table实现递归嵌套的示例代码
Aug 14 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
支持oicq头像的留言簿(二)
2006/10/09 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
php中chdir()函数用法实例
2014/11/13 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
2016/03/18 PHP
读jQuery之五(取DOM元素)
2011/06/20 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
2013/11/25 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
JS本地刷新返回上一页代码
2016/07/25 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
JS验证全角与半角及相互转化的介绍
2017/05/18 Javascript
EasyUI实现下拉框多选功能
2017/11/07 Javascript
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
详解基于Node.js的HTTP/2 Server实践
2018/05/31 Javascript
NodeJS实现自定义流的方法
2018/08/01 NodeJs
vue中使用input[type=&quot;file&quot;]实现文件上传功能
2018/09/10 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
python邮件发送smtplib使用详解
2020/06/16 Python
python 使用pandas计算累积求和的方法
2019/02/08 Python
Python中socket网络通信是干嘛的
2020/05/27 Python
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
一年级学生期末评语
2014/04/21 职场文书
保密协议书范本
2014/04/22 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
python基础之//、/与%的区别详解
2022/06/10 Python