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

Vue3 中 axios 的安装及使用

目录

  • 前言:
  • 一、什么是 axios ?
  • 二、Axios 的配置项
  • 三、Axios 的请求方式
  • 四、自定义创建实例
  • 五、Axios 请求错误处理
  • 六、Axios 解决跨域问题
  • 七、Axios 请求案例
    • 随机笑话大全
  • 总结:

前言:

在编写vue里的项目时,必须要用和后台进行合作,我们始终绕不开对 axios 的使用 ,vue3 中 axios 进行了一些重要的更新,在这里分享给大家


一、什么是 axios ?

Axios 是一个基于 promise 网络请求库,作用于 node.js 和浏览器中
Axios 在服务端它使用原生 node.jshttp 模块,而在客户端(浏览端)则使用 XMLHttpRequests
Axios 可以拦截请求和响应、转换请求和响应数据、取消请求、自动转换 JSON 数据
Axios 安装方式:npm install axios


二、Axios 的配置项

这些是创建请求时最常用的配置选项;详细的配置项请前往 Axios 官网

提示:

只有 url 是必需的;如果没有指定 method,则请求将默认使用 GET 方法

{url: '/user', // 请求的服务器地址 URL        method: 'GET', // 请求方式,默认值 GETbaseURL: 'https://some-domain.com/api/', // 如果 url 不是绝对地址,则会发送请求时在 url 前方加上 baseURLheaders: {'X-Requested-With': 'XMLHttpRequest'}, // 自定义请求头params: { ID: 12345 }, // 与请求一起发送的 URL 参数data: { firstName: 'Fred' },  // 作为请求体被发送的数据,仅适用 'PUT', 'POST', 'DELETE 和 'PATCH' 请求方法timeout: 1000, // 请求超时的毫秒数,如果请求时间超过 `timeout` 的值,则请求会被中断,默认值是 `0` (永不超时),responseType: 'json', // 期望服务器返回的数据类型,选项包括: 'arraybuffer', 'document', 'json', 'text', 'stream', 浏览器专属:'blob',默认值 json// 允许在向服务器发送前,修改请求数据,它只能用于 'PUT', 'POST' 和 'PATCH' 这几个请求方法transformRequest: [function (data, headers) {   return data; // 对发送的 data 进行任意转换处理}],// 在传递给 then/catch 前,允许修改响应数据transformResponse: [function (data) {return data; // 对接收的 data 进行任意转换处理}]
}

三、Axios 的请求方式

为了方便起见,已经为所有支持的请求方法提供了别名

  1. axios.request(config)
  2. axios.get(url[, config])
  3. axios.delete(url[, config])
  4. axios.head(url[, config])
  5. axios.options(url[, config])
  6. axios.post(url[, data[, config]])
  7. axios.put(url[, data[, config]])
  8. axios.patch(url[, data[, config]])

注意:

在使用别名方法时,urlmethoddata 这些属性都不必在config中指定

// 发送一个 GET 请求
axios('/example-url/……', // 请求地址{ /* 请求体中的参数 */ },{method: 'GET', // 请求方式,可省略不写// …… 其他配置 ……}
)
// 发送一个 POST 请求
axios('/example-url/……', // 请求地址{ /* 请求体中的参数 */ },{method: 'POST ', // 请求方式// …… 其他配置 ……}
)

四、自定义创建实例

axios.create([config]):调用create函数传入自定义配置,来创建自定义axios实例

// src/request/axiosInstance .js
import axios from 'axios'const request = axios.create({baseURL: 'https://some-domain.com/api/',timeout: 1000,headers: {'X-Custom-Header': 'foobar'}
})export default request

使用自定义实例发送请求:

// 方法一:
import request from '@/request/axiosInstance.js'request({method: 'POST', // 请求方式url: '/example-url/……', // 请求地址// …… 其他配置 ……
})// 方法二:
import request from '@/request/axiosInstance.js'
request('/example-url/……', // 请求地址{method: 'POST', // 请求方式// …… 其他配置 ……}
)// 方法三:
import request from '@/request/axiosInstance.js'request.post('/example-url/……', // 请求地址{ /* 请求体中的参数 */ },{/* …… 其他配置 …… */}
)

五、Axios 请求错误处理

发送请求后,使用 .catch(error => {}) 来处理此次请求异常,请求成功发出且服务器也响应了状态码,但状态代码超出了 2xx 的范围

axios({method: 'GET', // 请求方式url: '/example-url/……', // 请求地址
}).catch(error => {console.log('请求失败!')
})

六、Axios 解决跨域问题

  1. 跨域:指的是浏览器不能执行其他网站的脚本;它是由浏览器的同源策略造成的,是浏览器对 javascript 施加的安全限制
  2. 同源策略:是指协议,域名,端口都要相同,其中有一个不同都会产生跨域
  3. 浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源,如果未处理跨域访问则会在请求时控制台出现 Access-Control-Allow-Origin…… 的报错信息
  4. 如何处理跨域问题,可在 vite 项目的 vite-config.js 文件中添加 proxy 代理
import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'export default defineConfig({plugins: [vue()],resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))}},// 服务server: {// 代理proxy: {'/api': {target: 'https://v.api.aa1.cn/api', // 代理后台服务器地址changeOrigin: true, //允许跨域               rewrite: path => path.replace(/^\/api/,'') // 将请求地址中的 /api 替换成空}}}
})

七、Axios 请求案例

本次请求测试采用的是 APISpace 提供的测试 API ,当然如果你有自己的测试的 API 也可测试自己的 API

提示:

测试 APISpace 提供的接口需要登录其账号获取鉴权私钥,领取测试案例的使用次数方可测试

// 代理服务来解决跨域问题import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'export default defineConfig({plugins: [vue()],resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))}},// 服务server: {// 代理proxy: {'/apispace': {target: 'https://eolink.o.apispace.com/', // 代理后台服务器地址changeOrigin: true, //允许跨域               rewrite: path => path.replace(/^\/apispace/,'') // 将请求地址中的 /ok 替换成空}}}
})

随机笑话大全

随机笑话大全--
请求方式POST
请求地址https://eolink.o.apispace.com/xhdq/common/joke/getJokesByRandom
请求头X-APISpace-Token鉴权私钥
请求头Authorization-Type鉴权方式,值为:apikey
请求头Content-Typeapplication/x-www-form-urlencoded
请求body参数pageSize获取条数(最多20条)必填,类型:String
返回数据格式JSON
返回案例返回案例

请求测试案例:

// 选项式:
<script>
import axios from 'axios'
export default {data: () => ({count: null, // 获取条数jokes: null, // 笑话合集}),methods: {// 获取随机笑话getRandomJokes() {// 发送请求axios('/apisapce/xhdq/common/joke/getJokesByRandom', // 请求地址(已处理跨域){method: 'POST', // 请求方式// 请求头headers: {'X-APISpace-Token': 'p6cz2g80pcplxtituz1mz3ccgkgaaxl6','Authorization-Type': 'apikey','Content-Type': 'application/x-www-form-urlencoded'},// 请求体中的参数data: { 'pageSize': this.count }}).then(response => {const responseData = response.data // 获取服务器响应的数据console.log(responseData)if (responseData.statusCode === '000000') {// 请求成功this.jokes = responseData.result} else {// 请求失败alert(responseData.desc)}}).catch(error => {alert('服务器异常')})}}
}
</script><template>获取个数:<input type="number" v-model="count"><button @click="getRandomJokes">获取随即笑话</button><hr><ul><li v-for="j in jokes" v-html="j.content"></li></ul>
</template>
// 组合式:
<script setup>
import axios from 'axios'
import { ref } from 'vue'const count = ref(null) // 获取条数const jokes = ref(null) // 笑话合集// 获取随机笑话
function getRandomJokes() {// 发送请求axios(// 请求地址(已处理跨域)'/apisapce/xhdq/common/joke/getJokesByRandom', {// 请求方式method: 'POST', // 请求头headers: {'X-APISpace-Token': 'p6cz2g80pcplxtituz1mz3ccgkgaaxl6','Authorization-Type': 'apikey','Content-Type': 'application/x-www-form-urlencoded'},// 请求体中的参数data: { 'pageSize': count.value }}).then(response => {const responseData = response.data // 获取服务器响应的数据console.log(responseData)if (responseData.statusCode === '000000') {// 请求成功jokes.value = responseData.result} else {// 请求失败alert(responseData.desc)}}).catch(error => {alert('服务器异常')})
}
</script><template>获取个数:<input type="number" v-model="count"><button @click="getRandomJokes">获取随即笑话</button><hr><ul><li v-for="j in jokes" v-html="j.content"></li></ul>
</template>

总结:

欢迎大家加入我的社区,在社区中会不定时发布一些精选内容:https://bbs.csdn.net/forums/db95ba6b828b43ababd4ee5e41e8d251?category=10003


以上就是 Vue3 中 axios 的安装及使用,不懂得也可以在评论区里问我或私聊我询问,以后会持续发布一些新的功能,敬请关注。
我的其他文章:https://blog.csdn.net/weixin_62897746?type=blog

相关文章:

Vue3 中 axios 的安装及使用

目录前言&#xff1a;一、什么是 axios &#xff1f;二、Axios 的配置项三、Axios 的请求方式四、自定义创建实例五、Axios 请求错误处理六、Axios 解决跨域问题七、Axios 请求案例随机笑话大全总结&#xff1a;前言&#xff1a; 在编写vue里的项目时&#xff0c;必须要用和后台…...

Django设计模式以及模板层介绍

MVC和MTV 传统的MVC作用&#xff1a;降低模块间的耦合度&#xff08;解耦&#xff09;Django的MTV模式 作用&#xff1a;降低模块间的耦合度&#xff08;解耦&#xff09;什么是模板 1、模板是可以根据字典数据动态变化的html网页2、模板可以根据视图中传递的字典数据动态生成相…...

Linux信号一门搞定

1.信号是什么&#xff1f; 信号其实就是一个软件中断。 例&#xff1a; 输入命令&#xff0c;在Shell下启动一个前台进程。用户按下Ctrl-C&#xff0c;键盘输入产生一个硬件中断。如果CPU当前正在执行这个进程的代码&#xff0c;则该进程的用户空间代码暂停执行&#xff0c;…...

手撸一个动态Feign,实现一个“万能”接口调用

Feign&#xff0c;在微服务框架中&#xff0c;是的服务直接的调用变得很简洁、简单&#xff0c;而不需要再编写Java Http调用其他微服务的接口。 动态feign 对于fegin调用&#xff0c;我们一般的用法&#xff1a;为每个微服务都创建对应的feignclient接口&#xff0c;然后为每…...

Linux Capabilities 入门

目录 Linux capabilities 是什么&#xff1f; capabilities 的赋予和继承 线程的 capabilities Permitted Effective Inheritable Bounding Ambient 文件的 capabilities Permitted Inheritable Effective 运行 execve() 后 capabilities 的变化 案例 Linux capab…...

驱动 day6

关于设备树的理解&#xff1a; 设备树&#xff08;Device Tree&#xff09;是一种用于特定硬件设备的解释语法树。它用来表示存储有关主板硬件和CPU架构信息的数据在内核中的传递格式&#xff0c;使内核可以更好地了解硬件并支持它们&#xff0c;而不必编写固定的代码。设备节点…...

附录2-tensorflow目标检测

源码来自作者Bubbliiiing&#xff0c;我对参考链接的代码略有修改&#xff0c;网盘地址 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;dvb1 目录 1 参考链接 2 环境 3 数据集准备 3.1 VOCdevkit/VOC2007 3.2 model_data/voc_classes.txt 3.3 voc_an…...

常见的EMC问题

电磁兼容设计的目的就在于满足产品功能要求、减少调试时间&#xff0c;使产品满足电磁兼容标准的要求&#xff0c;并且使产品不会对系统中的其它设备产生电磁干扰。 电磁兼容设计中常见的问题有哪些&#xff1f; 1、电磁兼容设计可以从电路设计&#xff08;包括器件选择&…...

Redis内存存储效率问题

目录 内存碎片是如何形成的&#xff1f; 如何判断是否有内存碎片&#xff1f; 如何清理内存碎片&#xff1f; INFO命令 面向 Prometheus 的 Redis-exporter 监控 实习期间&#xff0c;了解到&#xff0c;企业级开发中多个项目使用Redis&#xff0c;运行Redis实例的有可能是…...

3.28 haas506 2.0开发教程-example-蓝牙多设备扫描(仅支持M320,HD1)

haas506 2.0开发教程-example-蓝牙多设备扫描案例说明蓝牙信息克隆1.手机蓝牙改名信息克隆代码测试案例说明 开发板扫描蓝牙设备&#xff0c;获取并打印蓝牙设备mac地址。mac地址每个设备不同&#xff0c;且不能更改。本案例仅适用于M320开发板和HD1-RTU。案例使用手机与iBeac…...

C语言经典编程题100例(41~60)

目录41、习题4-4 特殊a串数列求和42、习题4-6 水仙花数43、习题4-7 最大公约数和最小公倍数44、习题7-5 找鞍点45、练习5-1 求m到n之和46、练习5-2 找两个数中最大者47、练习5-3 数字金字塔48、习题5-1 符号函数49、习题5-2 使用函数求奇数和50、习题5-3 使用函数计算两点间的距…...

git日常使用命令

实习这段时间使用了很多git指令来提交代码&#xff0c;简单记录一下日常使用的指令&#xff1a; 提交代码通常顺序&#xff1a; 1.git status 查看本地修改项 2.git add . 提交全部文件 &#xff08;这个 .是全部文件&#xff09;到暂存区 3.git commit -m ‘本次提交的说明’…...

ES6对象展开运算符浅拷贝or深拷贝

ES6中提出的对象展开运算符“…”就是用来展开元素的。有了它就不用代码循环遍历了&#xff0c;偷懒专用。 1. 合并数组 展开原有数组中的所有元素&#xff0c;可以合并成一个新的数组。 var a[1,2,3]; var b[4,5,6]; var c[...a,...b]; console.log(c) // 输出&#xff1a;…...

leaflet 上传包含shp的zip文件,在map上解析显示图形(059)

第059个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中本地上传包含shp的zip文件,利用shapefile读取shp数据,并在地图上显示图形。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果加载shapefile.js方式安装引用jszip(…...

CAN总线详细介绍

1.1 CAN是什么&#xff1f; CAN 最终成为国际标准 &#xff08; ISO11898(高速应用)和 ISO11519&#xff08;低速应用&#xff09;&#xff09;&#xff0c;是国际上应用最广泛的现场总线之一。 1.2 CAN总线特点 多主方式: 可以多主方式工作&#xff0c;网络上任意一个节点…...

python如何完成对 Excel文件的解密后读取?

通常为了防止重要的Excel文件数据内容的泄露&#xff0c;需要对文件整体进行加密与解密的操作。 对于文件的加解密过程&#xff0c;python也有很多非标准库来帮助我们完成操作&#xff0c;这里主要说明如何完成对Excel文件的解密与读取操作。 这里我们使用到的是msoffcrypto-…...

微服务实战--高级篇:RabbitMQ高级

服务异步通信-高级篇 消息队列在使用过程中&#xff0c;面临着很多实际问题需要思考&#xff1a; 1.消息可靠性 消息从发送&#xff0c;到消费者接收&#xff0c;会经理多个过程&#xff1a; 其中的每一步都可能导致消息丢失&#xff0c;常见的丢失原因包括&#xff1a; 发送…...

autoCAD2022 - 设置新的原点

文章目录autoCAD2022 - 设置新的原点概述笔记UCS原点设置功能的菜单位置ENDautoCAD2022 - 设置新的原点 概述 上次整板子的dxf时, 原来的原点不合适, 想调整一下. 当时整完了, 没记录. 这次用的时候, 又找半天… 设置新原点的功能, 不在顶部菜单中, 而是在视图右上角的UCS图标…...

spring boot 配置 mybatis-plus多数据源

简介Mybatis-puls 多数据源的使用&#xff0c;采用的是官方提供的dynamic-datasource-spring-boot-starter包的 DS 注解&#xff0c;具体可以参考官网&#xff1a;https://gitee.com/baomidou/dynamic-datasource-spring-boot-starterpom.xml文件引入如下依赖主要引入dynamic-d…...

独立产品灵感周刊 DecoHack #047 - 安卓手机上最有用的APP

本周刊记录有趣好玩的独立产品设计开发相关内容&#xff0c;每周发布&#xff0c;往期内容同样精彩&#xff0c;感兴趣的伙伴可以点击订阅我的周刊。为保证每期都能收到&#xff0c;建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。&#x1f4bb; 产品推荐 1. Bouncer Tempor…...

3分钟掌握英雄联盟身份定制:LeaguePrank终极使用指南

3分钟掌握英雄联盟身份定制&#xff1a;LeaguePrank终极使用指南 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 还在为千篇一律的游戏界面感到乏味吗&#xff1f;想在不违反游戏规则的前提下展示个性风格&#xff1f;LeagueP…...

Intv_AI_MK11 Anaconda数据科学环境配置:一站式AI研发平台搭建

Intv_AI_MK11 Anaconda数据科学环境配置&#xff1a;一站式AI研发平台搭建 1. 为什么选择Anaconda搭建AI开发环境 如果你刚开始接触AI开发&#xff0c;可能会被各种环境配置问题困扰。不同框架的版本兼容性、CUDA驱动安装、Python包依赖冲突...这些问题足以让新手望而却步。A…...

企业级数据治理最后一公里:Polars 2.0清洗审计日志、血缘追踪与合规性验证(GDPR-ready)

第一章&#xff1a;企业级数据治理最后一公里&#xff1a;Polars 2.0清洗审计日志、血缘追踪与合规性验证&#xff08;GDPR-ready&#xff09;在现代数据平台中&#xff0c;审计日志的结构化清洗与可追溯性验证常成为数据治理落地的瓶颈。Polars 2.0 凭借其零拷贝惰性执行引擎、…...

DanKoe 视频笔记:致富之路:三个关键决策

在本节课中&#xff0c;我们将要学习决定个人能否实现财富积累的三个核心决策。这些决策并非关于具体的赚钱技巧&#xff0c;而是关于如何从根本上重塑你的思维方式和行为模式&#xff0c;为创造财富铺平道路。 概述 许多人渴望财富&#xff0c;但往往不得其法。真正的致富之…...

Wan2.1-UMT5与Python入门:零基础学会用AI生成你的第一个视频

Wan2.1-UMT5与Python入门&#xff1a;零基础学会用AI生成你的第一个视频 你是不是也刷到过那些由AI生成的酷炫短视频&#xff0c;心里痒痒的&#xff0c;觉得这技术真神奇&#xff1f;但一想到要学复杂的编程和模型部署&#xff0c;就觉得头大&#xff0c;感觉离自己很远。 别…...

技术赋能B端拓客:号码核验行业的迭代与价值升级,氪迹科技法人股东号码核验筛选,阶梯式价格

2026年&#xff0c;B端市场竞争日趋激烈&#xff0c;拓客逻辑已从“规模扩张”转向“价值深耕”&#xff0c;“精准、高效、低成本”成为所有拓客团队的核心追求。号码核验作为B端拓客的前置基础性环节&#xff0c;其服务质量直接决定线索价值、人力效能与投入回报比&#xff0…...

OpenClaw小龙虾初体验【安装学习】

文章目录一、前言二、安装三、360安全龙虾四、腾讯龙虾4.1 文件移动4.2 应用分析4.3 Docker失败原因一、前言 最近小龙虾很火&#xff0c;不禁能说还能做&#xff0c;本质就类似木马&#xff0c;获取电脑权限&#xff0c;不禁能操作各应用还能联动外接设备。 那肯定要学习一下…...

Qwen2.5-14B-Instruct入门指南:像素剧本圣殿UI组件与剧本结构映射关系解析

Qwen2.5-14B-Instruct入门指南&#xff1a;像素剧本圣殿UI组件与剧本结构映射关系解析 1. 工具概览与核心价值 像素剧本圣殿&#xff08;Pixel Script Temple&#xff09;是一款基于Qwen2.5-14B-Instruct大模型深度优化的专业剧本创作工具。它将AI强大的文本生成能力与独特的…...

【STM32】幻尔16路舵机控制板串口协议解析与实战编程

1. 幻尔16路舵机控制板基础认知 第一次拿到幻尔16路舵机控制板时&#xff0c;我盯着密密麻麻的接口有点发懵。这块巴掌大的绿色电路板&#xff0c;居然能同时控制16个舵机&#xff1f;经过半年多的项目实战&#xff0c;我可以负责任地说&#xff1a;这绝对是多舵机项目的开发神…...

中小企业如何选择适合自己的SEO软件

了解SEO软件的基本概念 在当今数字化营销时代&#xff0c;中小企业如何选择适合自己的SEO软件是一个至关重要的问题。SEO&#xff08;搜索引擎优化&#xff09;软件的核心功能是帮助企业提升在搜索引擎上的排名&#xff0c;从而增加网站的曝光率和流量。但是&#xff0c;市面上…...