Vue学习:axios
admin
2024-04-05 20:08:34
0

Axios

1. axios的简介

1.1 axios是什么

​ Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。

  • 前端最流行的ajax请求库
  • react/vue官方推荐使用axios发送ajax请求
  • 官方网站: https://www.axios-http.cn/

1.2 axios特征

  • 从浏览器创建 XMLHttpRequests
  • 从 node.js 创建 http 请求
  • 支持 Promise API
  • 拦截请求和响应
  • 转换请求和响应数据
  • 取消请求
  • 自动转换JSON数据
  • 客户端支持防御[XSRF]

2. axios的使用

2.1 axios的API

  • axios(config): 通用的发送任意请求的方式
  • axios(url[, config]): 可以只指定url发送get请求
  • axios.request(config): 等同于axios(config)
  • axios.get(url[, config]): 发送get请求
  • axios.delete(url[, config]): 发送delete请求
  • axios.post(url[, data[, config]]):发送post请求
  • axios.put(url[, data[, config]]): 发送put请求
  • axios.patch(url[, data[, config]]): 发送patch请求
  • axios.head(url[, config])
  • axios.options(url[, config])
  • axios.defults.xxx:请求的默认全局配置
  • axios.interceptors.request.use(): 添加请求拦截器
  • axios.interceptors.response.use(): 添加响应拦截器
  • 有时候, 我们可能需求同时发送两个请求,使用axios.all, 可以放入多个请求的数组.
    axios.all([]) 返回的结果是一个数组,使用 axios.spread 可将数组 [res1,res2] 展开为 res1, res2

2.2 常见的配置选项

  • 请求地址

  • url: ‘/user’,

  • 请求类型

  • method: ‘get’,

  • 请根路径

  • baseURL: ‘http://www.mt.com/api’,

  • 请求前的数据处理

  • transformRequest:[function(data){}],

  • 请求后的数据处理

  • transformResponse: [function(data){}],

  • 自定义的请求头

  • headers:{‘x-Requested-With’:‘XMLHttpRequest’},

  • URL查询对象

  • params:{ id: 12 },

  • 查询对象序列化函数

  • paramsSerializer: function(params){ }

  • 请求体

  • data: { key: ‘aa’},

  • 超时设置

  • timeout: 1000,

2.3 安装axios

第一种方式: 使用npm

npm install axios

第二种方式: 使用cdn


第三种方式: 使用yarn

yarn add axios

2.4 vue3使用axios发送请求

  1. 安装axios插件
npm install axios 
  1. 在main.js文件使用axios
import axios from 'axios'
const app = createApp(App);
//使用axios, 并把axios作为app的全局属性
app.config.globalProperties.$axios=axios;
app.mount('#app')
  1. axios发送get请求demo:
this.$axios.get("https://autumnfish.cn/cloudsearch?keywords=" + this.query).then(function(response) {console.log(response)that.musicList = response.data.result.songs;}, function(err) {});

3.封装axios的工具

安装qs

npm install qs

在src目录下创建一个utils目录,用于存放一些工具的js文件, 在这个目录下我们创建一个request.js用于封装axios

import axios from 'axios'
import qs from 'qs'
/*** axios的传参方式:* 1.url 传参 一般用于Get和Delete 实现方式:config.params={JSON}* 2.body传参 实现方式:config.data = {JSON},且请求头为:headers: { 'Content-Type': 'application/json;charset=UTF-8' }* 3.表单传参 实现方式:config.data = qs.stringify({JSON}),且请求头为:且请求头为:headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' }*/
// axios实例
const $http = axios.create({baseURL: '',timeout: 60000,headers: { 'Content-Type': 'application/json;charset=UTF-8' }
})// 请求拦截器
$http.interceptors.request.use((config) => {// 追加时间戳,防止GET请求缓存if (config.method?.toUpperCase() === 'GET') {config.params = { ...config.params, t: new Date().getTime() }}if (Object.values(config.headers).includes('application/x-www-form-urlencoded')) {config.data = qs.stringify(config.data)}return config},error => {return Promise.reject(error)}
)// 响应拦截器
$http.interceptors.response.use(response => {const res = response.datareturn res},error => {return Promise.reject(error)}
)// 导出 axios 实例
export default $http

在main.js中,把$http绑定到app对象上

// 导入封装好的axios并挂载到Vue全局属性上
import $http from './utils/request'
app.config.globalProperties.$http = $http

使用:

 methods: {sendAjax(){this.$http.get("https://autumnfish.cn/cloudsearch?keywords=" + this.query).then(function(response) {console.log(response)}, function(err) {});}},

相关内容

热门资讯

地下城怎么转职,我是鬼剑士怎么... 地下城怎么转职,我是鬼剑士怎么转神枪手啊-急当TX倒闭的时候或许你就可以鬼剑转神枪手了等待吧鬼剑士不...
3秒抢3个,二手溢价超600元... 今天(7月8日)起 迪士尼上新夏日单品 就是下面这几个娃娃 在官方线上平台 这几个娃娃一上线就秒没...
7月11日,凉山彝族火把节等你... 红星新闻网(记者 李婉清)7月8日报道7月8日,省政府新闻办在四川省新闻发布厅举行“万千气象看四川・...
暑假这样过才叫爽!超全攻略让你... 暑假终于来了!是不是已经按捺不住内心的激动,迫不及待想要开启快乐时光了呢?别急,让我为你奉上一份超全...
求姓名藏头诗一首,给女朋友的,... 求姓名藏头诗一首,给女朋友的,她叫刘树红要古体诗七言那种,意境要美要押韵你乃本是天生仙,与我相聚下凡...
希望大家给我介绍几本关于人生经... 希望大家给我介绍几本关于人生经历方面的好书,谢谢了!!!《让方向更清晰!!》作者:爱琳·C卡瑟拉《《...
海贼王萨博在德雷斯罗萨回忆里得... 海贼王萨博在德雷斯罗萨回忆里得知艾斯的死讯是在哪集?没有具体说明在哪集,那只是个回忆片段而已。动漫里...
武林外传里佟掌柜儿时的好友说的... 武林外传里佟掌柜儿时的好友说的是什么地方的方言?一楼的,是陕西话那为什么和佟掌柜说的不一样?是陕西话...
用英语以春节为题的手抄报 春节... 用英语以春节为题的手抄报 春节英语手抄报小学生春节英语手抄报教程关于春节的英语手抄报怎么画春节英语手...
大学生研发校徽月饼是什么样子的... 大学生研发校徽月饼是什么样子的?大学生研发“校徽月饼”走红 原料取材学校培育作物。陕西大学生研发“彩...
《潜伏》中,晚秋是个什么样的人... 《潜伏》中,晚秋是个什么样的人?结局如何晚秋有着悲惨的命运,一直深爱着孙红蕾,最后孙红蕾在香港执行任...
我爱上了我的小学女同桌,我13... 我爱上了我的小学女同桌,我13岁13岁 好小的年龄呀!暗恋两年也不错,主要是你们太小了,现在你们懂得...
TVB出过一个动画是在讲一些章... TVB出过一个动画是在讲一些章鱼小丸子的故事的叫什么?【是在一个类似放学ICY的节目播的】章鱼小超人...
谁有周建龙版的 有声小说 盗墓... 谁有周建龙版的 有声小说 盗墓笔记 7 8 部 分享下 谢谢盗吧首页吧规+资源,甭找了,就没这东西周...
当你一个人在深夜发呆的时候 会... 当你一个人在深夜发呆的时候 会听什么歌?推荐几首好听的额你喜欢悲伤的还是节奏性强的啊?
搞笑一家人剧情 搞笑一家人剧情尤美喜欢谁?我觉得才开始尤美喜欢允浩,允浩也喜欢尤美,只是尤美误会是她爸爸杀了开成嫂的...
跪求好听的歌! 跪求好听的歌!英文歌 中文歌都要 重在好听多来点啊下个,路口,见圣诞结 爱似水仙你若...
我只会打字,对电脑编程不懂怎么... 我只会打字,对电脑编程不懂怎么办?这没有其他的办法,只有深造你要学习吗?
百听不厌的50首经典老歌推荐 百听不厌的50首经典老歌推荐百听不厌的50首经典老歌推荐:1、后来2、光辉岁月3、鬼迷心窍4、大海5...
关于防溺水的手抄报,自己防溺水... 关于防溺水的手抄报,自己防溺水的卡通图片,各位亲,急用啊!