Axios 的基本使用与 Fetch 的比较、在 Vue 项目中使用 Axios 的最佳实践

文章目录

  • 1. 引言
  • 2. Axios 的基本使用
    • 2.1 安装 Axios
    • 2.2 发起 GET 请求
    • 2.3 发起 POST 请求
    • 2.4 请求拦截器
    • 2.5 设置全局配置
  • 3. Axios 与 Fetch 的比较
    • 3.1 Axios 与 Fetch 的异同点
    • 3.2 Fetch 的基本使用
    • 3.3 使用 Fetch 处理 POST 请求
  • 4. 讨论在 Vue 项目中使用 Axios 的最佳实践
    • 4.1 将 Axios 集成到 Vue 项目中
    • 4.2 在组件中使用 Axios
  • 5. 总结

1. 引言

在前端开发中,发起 HTTP 请求是与服务器交互的核心操作。Axios 和 Fetch 是两种常用的 HTTP 请求工具。本文将详细介绍 Axios 的基本用法,并对比其与原生 Fetch API 的区别,帮助开发者在实际项目中做出合适的选择。


2. Axios 的基本使用

话题详细解释
Axios 的基本使用Axios 是一个基于 Promise 的 HTTP 库,提供了丰富的功能用于简化网络请求操作,支持自动转换 JSON、请求拦截器等。

2.1 安装 Axios

Axios 可以通过 npm 安装,也可以直接通过 CDN 链接引入。

  • 使用 npm 安装:

    npm install axios
    
  • 通过 CDN 引入:

    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
    

2.2 发起 GET 请求

Axios 发起 GET 请求非常简单,直接使用 axios.get 方法,接收 URL 作为参数。

axios.get('https://api.example.com/data').then(response => {console.log(response.data);}).catch(error => {console.error(error);});

2.3 发起 POST 请求

对于 POST 请求,使用 axios.post 方法,传入请求 URL 和请求数据:

axios.post('https://api.example.com/data', {name: 'John Doe',age: 25}).then(response => {console.log(response.data);}).catch(error => {console.error(error);});

2.4 请求拦截器

Axios 提供了请求和响应拦截器,可以在请求发送前或响应返回后对数据进行处理。

// 请求拦截器
axios.interceptors.request.use(config => {config.headers.Authorization = 'Bearer token';return config;
}, error => {return Promise.reject(error);
});// 响应拦截器
axios.interceptors.response.use(response => {return response;
}, error => {return Promise.reject(error);
});

2.5 设置全局配置

可以为所有 Axios 请求设置全局默认配置,如请求的基准 URL、请求超时时间等:

axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.timeout = 10000;  // 10秒超时

3. Axios 与 Fetch 的比较

话题详细解释
Axios 与 Fetch 的比较Axios 是一个完整的 HTTP 库,而 Fetch 是浏览器内置的原生 API,它们在功能、用法和兼容性方面有显著区别。

3.1 Axios 与 Fetch 的异同点

特点AxiosFetch
返回值默认返回已经 JSON 解析的数据,无需手动调用 .json() 方法需要手动调用 response.json() 方法来解析 JSON 数据
支持的浏览器支持更广泛的浏览器,兼容性较好,支持旧版浏览器仅支持现代浏览器,IE 浏览器不支持 Fetch
自动 JSON 转换自动处理 JSON 数据不自动处理 JSON,需要手动解析
请求拦截和响应拦截支持请求和响应拦截器,方便在请求前后处理数据不支持拦截器,需要手动实现
错误处理自动捕获 4XX 和 5XX 错误并抛出到 catch需要手动检查 response.ok 来判断是否是错误状态
取消请求支持通过 axios.CancelToken 取消请求原生 Fetch 不支持取消请求,必须借助 AbortController 实现
请求配置使用统一的配置对象,提供了更多选项,如 timeout、自定义请求头等需要手动配置请求头和其他选项,且没有内置超时功能
跨域请求支持处理跨域请求并自动携带 cookie默认不携带 cookie,需要手动配置 credentials: 'include'

3.2 Fetch 的基本使用

Fetch 是原生 JavaScript API,使用 Fetch 发起请求较为简单,但需要更多的手动配置。

fetch('https://api.example.com/data').then(response => {if (!response.ok) {throw new Error('Network response was not ok');}return response.json();}).then(data => {console.log(data);}).catch(error => {console.error('Fetch error:', error);});

3.3 使用 Fetch 处理 POST 请求

与 GET 请求类似,Fetch 发起 POST 请求时需要手动设置请求方法和请求头。

fetch('https://api.example.com/data', {method: 'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify({name: 'John Doe',age: 25})
})
.then(response => response.json())
.then(data => {console.log(data);
})
.catch(error => {console.error('Fetch error:', error);
});

4. 讨论在 Vue 项目中使用 Axios 的最佳实践

话题详细解释
讨论在 Vue 项目中使用 Axios 的最佳实践在 Vue 项目中,Axios 的使用非常普遍,它能简化与 API 的交互,并且易于与 Vue 的生命周期钩子、状态管理等集成。

4.1 将 Axios 集成到 Vue 项目中

通常在 Vue 项目中,我们会将 Axios 配置封装为一个模块,便于全局调用,并且可以统一处理请求和响应。

// src/services/api.js
import axios from 'axios';const api = axios.create({baseURL: 'https://api.example.com',timeout: 5000,
});api.interceptors.request.use(config => {// 在请求前统一处理config.headers.Authorization = `Bearer ${localStorage.getItem('token')}`;return config;
});api.interceptors.response.use(response => response,error => {// 在响应错误时统一处理console.error('API error:', error);return Promise.reject(error);}
);export default api;

4.2 在组件中使用 Axios

在 Vue 组件中,可以直接导入封装好的 Axios 实例进行调用:

<script>
import api from '@/services/api';export default {data() {return {userData: null,};},created() {this.fetchUserData();},methods: {async fetchUserData() {try {const response = await api.get('/user');this.userData = response.data;} catch (error) {console.error('Error fetching user data:', error);}}}
}
</script>

5. 总结

Axios 和 Fetch 都是发起 HTTP 请求的有效工具。Axios 提供了更加全面的功能,如请求拦截器、自动 JSON 解析、错误处理和取消请求,适合复杂应用场景。Fetch 作为原生 API,轻量但需要更多的手动配置。在 Vue 项目中,使用 Axios 作为默认的请求工具是较为普遍的选择,能显著提升开发效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/56790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AP上线的那些事儿(1)capwap建立过程、设备初始化以及二层上线

1、了解FITAP与AC的建立过程 之前我们已经知道了FATAP与FIT是一对双胞胎一样的兄弟&#xff0c;FAT哥哥能够直接独立使用当AP桥接、路由器等&#xff0c;而弟弟FIT则比较薄弱&#xff0c;独自发挥不出功效&#xff0c;需要一位师傅&#xff08;AC&#xff09;来带领&#xff0c…

ssm配置模式

新版 用Java类&#xff0c;全注解demo案例 1. AppConfig.java (Spring主配置类)package com.example.config;import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.cont…

MATLAB实现AM调制解调

1.基本概念 1.1 AM调制原理 调幅就是使载波的振幅随调制信号的变化规律而变化。基带信号m(t)与直流分量A0相加&#xff0c;然后和高频载波相乘实现AM信号的调制&#xff0c;如图1所示。 1.2 AM解调原理 AM信号经过信道传输&#xff0c;引入噪声后&#xff0c;再和载波相乘&…

OpenCV之换脸技术:一场面部识别的奇妙之旅

在这个数字化与智能化并进的时代&#xff0c;图像处理技术日益成为连接现实与虚拟世界的桥梁。其中&#xff0c;换脸技术作为一项颇受欢迎且富有挑战性的应用&#xff0c;不仅让人惊叹于技术的魔力&#xff0c;更在娱乐、影视制作等领域展现了无限可能。今天&#xff0c;我们就…

arp欺骗及其实验

ARP欺骗&#xff08;ARP Spoofing&#xff09;是一种网络攻击技术&#xff0c;攻击者通过伪造ARP&#xff08;地址解析协议&#xff09;消息&#xff0c;将其MAC地址与目标IP地址关联&#xff0c;从而实现对网络流量的截获、篡改或重定向。以下是ARP欺骗的详细信息&#xff1a;…

怎么修改编辑PDF的内容,有这4个工具就行了。

PDF 软件在现代的办公或者是学习当中的应用非常广泛&#xff0c;编辑PDF内容对很多人来说也是一件常有的事情。如果有了PDF 编辑软件&#xff0c;查看&#xff0c;编辑&#xff0c;修改&#xff0c;分享也会变得更加方便简单&#xff0c;所以今天要给大家介绍几款这样的工具。 …

python-库

python-库 常用库 仅个人笔记使用&#xff0c;感谢点赞关注 常用库 dill&#xff1a;对象序列化 目前仅专注于 NLP 大模型 机器学习和前后端的技术学习和分享 感谢大家的关注与支持&#xff01;

vue特效,一片动态星空

vue实现漂亮星空&#xff0c;超级简单 1.创建vue项目&#xff1a; vue create demo 2.注册vuecli : npm i element-ui -S 3.加载依赖 &#xff1a;npm i 4.运行项目 :npm run serve <!DOCTYPE html> <html lang"en"> <head><…

Linux SSH免密登录

生成密钥-默认 出现三个提示步骤,直接回车即可 看到下图的提示的时候,你已经生成密钥成功 ssh-keygen -t rsa 生成密钥-定制化 与默认的步骤一致,唯一不同的是命令,话不多说,上命令 ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_new-t rsa&#xff1a;指定密钥类型为 RSA。…

FreeRTOS:任务通知

目录 一、简介 二、相关API 1.发送任务通知的API 2.获取任务通知的API 三、使用场景 1.代替消息队列 2.代替二值信号量 3.代替计数信号量 4.代替事件组 一、简介 FreeRTOS的任务通知&#xff08;Task Notifications&#xff09;是一个轻量级、快速的机制&#xff0c;用于…

【ELK】初始阶段

一、logstash学习 安装的时候最好不要有中文的安装路径 使用相对路径 在 Windows PowerShell 中&#xff0c;如果 logstash 可执行文件位于当前目录下&#xff0c;你需要使用相对路径来运行它。尝试输入以下命令&#xff1a; .\logstash -e ‘input { stdin { } } output { s…

详解23种设计模式——第一部分:概述+创建型模式

目录 1. 概述 2. 创建型模式 2.1 简单&#xff08;静态&#xff09;工厂模式 2.1.1 介绍 2.1.2 实现 2.2 工厂模式 2.3 抽象工厂模式 2.4 单例模式 2.4.1 饿汉模式 2.4.2 懒汉模式 2.4.3 线程安全的懒汉式 2.4.4 DCL单例 - 高性能的懒汉式 2.5 建造者模式 2.6 原…

kaptcha依赖maven无法拉取的问题

老依赖了&#xff0c;就是无法拉取&#xff0c;也不知道为什么&#xff0c;就是用maven一直拉去不成功&#xff0c;还以为是魔法的原因&#xff0c;试了好久发现不是&#xff0c;只好在百度寻求帮助了&#xff0c;好在寻找到了这位大佬的文章Maven - 解决无法安装 Kaptcha 依赖…

纯血鸿蒙!

纯血鸿蒙&#xff0c;这是哪个营销大师给起的名字啊&#xff01; 纯血&#xff01;象征着高贵、自信、自主、血性、英雄气概&#xff0c;都融入这纯血鸿蒙了&#xff01; 鸿蒙本就是开天辟地&#xff0c;加上纯血&#xff0c;真是荡气回肠&#xff01; 鸿蒙的推出背景 我们前…

Git安装与配置(2.47.0版本超详细)

一、背景 1.什么是gitt&#xff1f;&#xff08;官网引用&#xff09; Git 是一个快速、可扩展的分布式版本控制系统&#xff0c;它拥有异常丰富的命令集&#xff0c;可以提供高级操作和对内部的完全访问。 参阅 gittutorial[7] 开始使用&#xff0c;然后查看 giteveryday[7] …

ARM嵌入式学习--第四天

汇编与C混合编程 -汇编指令中调用C语言 .global _start _start:mov r0,#5mov r1,#3bl add stop:b stop int add(int a,int b) {int c a b;return c; } 无优化情况&#xff1a;&#xff08;反汇编之后&#xff0c;发现多了很多很多指令&#xff0c;运行之后结果是错误的&a…

MySQL-19.多表设计-一对多-外键

一.多表问题分析 二.添加外键 三.外键约束的问题

SpringCloud无介绍快使用,单机Eureka服务注册中心cloud-eureka-server7001搭建(十)

TOC 问题背景 从零开始学springcloud微服务项目 注意事项&#xff1a; 约定 > 配置 > 编码IDEA版本2021.1这个项目&#xff0c;我分了很多篇章&#xff0c;每篇文章一个操作步骤&#xff0c;目的是显得更简单明了controller调service&#xff0c;service调dao项目源码以及…

单位评职称需要在指定媒体上投稿发表文章看我如何轻松应对

在职场中,晋升与评职称是一项不可或缺的任务,而在这个过程中,完成相关的投稿更是至关重要。作为单位的一名员工,当我得知自己需要在指定的媒体上发表文章以满足职称评审要求时,心中既期待又忐忑。起初,我选择了传统的邮箱投稿方式,然而却没想到,这条路竟让我倍感挫折。 刚开始,…

交叉注意力融合时域、频域特征的FFT + CNN -BiLSTM-CrossAttention轴承故障识别模型

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客 三十多个开源…