一文学会Axios的使用

news2024/11/27 10:44:25


异步请求

  • 同步发送请求过程如下
    未命名.png

    浏览器页面在发送请求给服务器,在服务器处理请求的过程中,浏览器页面不能做其他的操作。只能等到服务器响应结束后才能,浏览器页面才能继续做其他的操作。

  • 异步发送请求过程如下浏览器页面发送请求给服务器,在服务器处理请求的过程中,浏览器页面还可以做其他的操作。

异步.png

Ajax

我们先来看一下axios的基础版本ajax,这里大家了解即可!

//2. 发送ajax请求
//2.1. 创建核心对象
var xhttp;
if (window.XMLHttpRequest) {
  xhttp = new XMLHttpRequest();
} else {
  // code for IE6, IE5
  xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

//2.2. 发送请求
xhttp.open("GET", "http://localhost:8080/ajax-demo/selectUserServlet);
           xhttp.send();

//2.3. 获取响应
xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    //处理响应的结果
  }
};

可以看出,前端给后端发送请求,主要由三部分组成:

  1. 创建对象
  2. 调用方法,发送请求
  3. 调用方法,获取响应

Axios

其实,axios是由ajax封装得来的,他简化了ajax的重复工作,使我们工作更简单

入门案例

我们以get请求为例来来研究axios的使用
方法一:

this.$axios.get('http://localhost:8080/goods.json?id=1',{
    			params: {
                    id:1
                }
			}).then(res=>{
					console.log(res.data);
				},err=>{
					console.log(err);
			})

方法二:

this.$axios({
		method: 'get',
		url: 'http://localhost:8080/goods.json?id=1',
    	params: {
            id:1
        }
	}).then(res=>{
		console.log(res.data);
	},err=>{
		console.log(err);
	})

可以看到,axios的请求依旧由 请求响应 来组成,而对象的创建这种重复不变的工作由axios来封装完成

在日常代码编写中,方式一更常用
这里我们其实可以优化,将 this.$ 来省略

axios.get('http://localhost:8080/goods.json?id=1',{
      params: {
                id:1
            }
  }).then(res=>{
      console.log(res.data);
    },err=>{
      console.log(err);
  })

这里的请求中,我们主要指定请求后端路径
这里的响应中,我们使用.then来访问,使用res=>{ }来获取响应的数据

相信到了这里,大家对axios的基础使用有了基本的了解,接下来,我们就好好研究一下我们的 请求响应 这两大板块

请求方式

axios可以请求的5种方法:

  1. get:获取数据,请求指定的信息,返回实体对象
  2. post:向指定资源提交数据(例如表单提交或文件上传)
  3. put:更新数据,从客户端向服务器传送的数据取代指定的文档的内容
  4. patch:更新数据,是对put方法的补充,用来对已知资源进行局部更新
  5. delete:请求服务器删除指定的数据
get

我们的入门案例中就使用的是get请求

axios.get('http://localhost:8080/goods.json?id=1',{
      params: {
                id:1
            }
  }).then(res=>{
      console.log(res.data);
    })

post

方法一:注意这里参数传递不写params

axios.post('/url',{
  id:1
}).then(res=>{
  console.log(res.data);
})


方法二:注意这里参数传递是data

axios({
	method: 'post',
	url: '/url',
	data: {
		id:1
	}
}).then(res=>{
	console.log(res.data);
})

form-data请求

let data = {
	//请求参数
}

let formdata = new FormData();
for(let key in data){
	formdata.append(key,data[key]);
}

axios.post('/goods.json',formdata).then(res=>{
	console.log(res.data);
})

put
axios.put('/url',{
  id:1
}).then(res=>{
  console.log(res.data);
})

patch请求
axios.patch('/url',{
  id:1
}).then(res=>{
  console.log(res.data);
})

delete

参数以明文形式提交

this.$axios.delete('/url',{
				params: {
					id:1
				}
			}).then(res=>{
				console.log(res.data);
			})

参数以封装对象的形式提交

axios.delete('/url',{
  data: {
    id:1
  }
}).then(res=>{
  console.log(res.data);
})

axios({
    method: 'delete',
    url: '/url',
    params: { id:1 }, //以明文方式提交参数
    data: { id:1 } //以封装对象方式提交参数
}).then(res=>{
	console.log(res.data);
})

all 并发请求(了解)

并发请求:同时进行多个请求,并统一处理返回值

 this.$axios.all([
	this.$axios.get('/goods.json'),
	this.$axios.get('/classify.json')
]).then(
	this.$axios.spread((goodsRes,classifyRes)=>{
		console.log(goodsRes.data);
		console.log(classifyRes.data);
	})
)

响应

这里我们只要了解使用

  • res => {} 接受参数
  • err => {} 接受参数

async和await

参考帖子:async和await

async/await 出现的原因

Promise 的编程模型依然充斥着大量的 then 方法,虽然解决了回调地狱的问题,但是在语义方面依然存在缺陷,代码中充斥着大量的 then 函数,这就是 async/await 出现的原因。async/await 让代码更少,更简洁。

入门案例

这里我们还是以 get 请求为例

// vue2 格式
async sendReq() {
  const resp = await axios.get('http://localhost:8080/goods');
}

// vue3格式
const sendReq = async () => {
  const resp = await axios.get('http://localhost:8080/goods');
}

写法说明:

  1. await 等待请求返回值,使用遍历接受返回值,我们使用响应值的时候可以直接使用resp这个接受变量来获取
  2. await等待谁呢?等待async修饰的异步函数,所以有await一定有async,并且作用在函数上

后续的深入原理教程我们下期再见!

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

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

相关文章

蓝桥杯第八届省赛题笔记------基于单片机的电子钟程序设计与调试

题目要求: 一、基本要求 1.1 使用 CT107D 单片机竞赛板,完成“电子钟”功能的程序设计与调试; 1.2 设计与调试过程中,可参考组委会提供的“资源数据包”; 1.3 Keil 工程文件以准考证号命名,保存在…

032-安全开发-JavaEE应用Servlet路由技术JDBCMybatis数据库生命周期

032-安全开发-JavaEE应用&Servlet路由技术&JDBC&Mybatis数据库&生命周期 #知识点: 1、JavaEE-HTTP-Servlet技术 2、JavaEE-数据库-JDBC&Mybatis 演示案例: ➢JavaEE-HTTP-Servlet&路由&周期 ➢JavaEE-数据库-JDBC&Mybat…

MiniCPM:揭示端侧大语言模型的无限潜力

技术博客链接: 🔗https://shengdinghu.notion.site/MiniCPM ➤ Github地址: 🔗https://github.com/OpenBMB/MiniCPM ➤ Hugging Face地址: 🔗https://huggingface.co/openbmb/MiniCPM-2B-sft-bf16 1 …

目标检测及相关算法介绍

文章目录 目标检测介绍目标检测算法分类目标检测算法模型组成经典目标检测论文 目标检测介绍 目标检测是计算机视觉领域中的一项重要任务,旨在识别图像或视频中的特定对象的位置并将其与不同类别中的对象进行分类。与图像分类任务不同,目标检测不仅需要…

工信部颁发的《计算机视觉处理设计开发工程师》中级证书

计算机视觉(Computer Vision)是一门研究如何让计算机能够理解和分析数字图像或视频的学科。简单来说,计算机视觉的目标是让计算机能够像人类一样对视觉信息进行处理和理解。为实现这个目标,计算机视觉结合了图像处理、机器学习、模…

RabbitMQ——基于 KeepAlived + HAProxy 搭建 RabbitMQ 高可用负载均衡集群

一、集群简介 1.1 集 群架构 当单台 RabbitMQ 服务器的处理消息的能力达到瓶颈时,此时可以通过 RabbitMQ 集群来进行扩展,从而达到提升吞吐量的目的。 RabbitMQ 集群是一个或多个节点的逻辑分组,集群中的每个节点都是对等的,每…

职业性格测试在求职应聘跳槽中的应用

人的性格总是千奇百怪,有的人总是想迎接挑战,超越自己,不停的奔着高处走,然而有的人总是喜欢随遇而安,踏踏实实一辈子,有份安稳的工作,有吃有喝就好。那么对于哪些喜欢迎接挑战,但又…

Adobe Camera Raw for Mac v16.1.0中文激活版

Adobe Camera Raw for Mac是一款强大的RAW格式图像编辑工具,它能够处理和编辑来自各种数码相机的原始图像。以下是关于Adobe Camera Raw for Mac的一些主要特点和功能: 软件下载:Adobe Camera Raw for Mac v16.1.0中文激活版 RAW格式支持&…

MyBatis一些常见知识点!

什么是 ORM 框架? MyBatis 有哪些优缺点? 典型回答: ORM(Object-Relational Mapping,对象关系映射)框架是一种将关系型数据库中的数据 与 应用程序中的对象进行映射的技术。它通过在程序代码中定义的类和属…

Unity类银河恶魔城学习记录1-12 PlayerComboAttack源代码 P39

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili PlayerPrimaryAttack.cs using System.Collections; using System.Collect…

七月论文审稿GPT第2.5版:微调GPT3.5 turbo 16K和llama2 13B以扩大对GPT4的优势

前言 我司自去年7月份成立大模型项目团队以来,至今已有5个项目组,其中 第一个项目组的AIGC模特生成系统已经上线在七月官网第二项目组的论文审稿GPT则将在今年3 4月份对外上线发布第三项目组的RAG知识库问答第1版则在春节之前已就绪至于第四、第五项目…

LLaVA:GPT-4V(ision) 的新开源替代品

LLaVA:GPT-4V(ision) 的新开源替代品。 LLaVA (https://llava-vl.github.io/,是 Large Language 和Visual A ssistant的缩写)。它是一种很有前景的开源生成式 AI 模型,它复制了 OpenAI GPT-4 在与图像对话方面的一些功…

(5)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—12种聚类算法说明与归纳

目录 一、12种聚类(无监督学习)算法说明和区分比较 聚类算法的类型(一) ​编辑导入函数库 加载数据集 ​编辑 (1)K-Means --Centroid models (2)Mini-Batch K-Means -- Centroid models (3)AffinityPropagation (Hierarchical) -- Connectivity models (4)Mean Shift…

最新GPT4.0使用教程,AI绘画,GPT语音对话使用,DALL-E3文生图

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画,文档对话总结DALL-E3文生图,相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚至也可以和…

算法练习-三数之和(思路+流程图+代码)

难度参考 难度:中等 分类:数组 难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。且所在课程未提供测试平台,故实现代码主要为自行测试的那种,以下内容均为个人笔记,旨在…

openGauss学习笔记-214 openGauss 性能调优-确定性能调优范围

文章目录 openGauss学习笔记-214 openGauss 性能调优-确定性能调优范围214.1 性能因素214.2 调优范围确定 openGauss学习笔记-214 openGauss 性能调优-确定性能调优范围 数据库性能调优通常发生在用户对业务的执行效率不满意,期望通过调优加快业务执行的情况下。正…

机器学习的整个流程

机器学习的整个流程定义了数据科学团队执行以创建和交付机器学习模型的工作流。此外,机器学习流程还定义了团队如何协作合作,以创建最有用的预测模型。 机器学习high level的流程 机器学习流程的关键步骤包括问题探索(Problem Exploration&a…

《dx12 龙书》第四部分学习笔记——预备知识(下)

7、多重采样技术的原理 由于屏幕中显示的像素不可能是无穷小的,所以并不是任意一条直线都能在显示器上“平滑”而完美地呈现出来。即为以像素矩阵 (matrix of pixels, 可以理解为“像素2D数组”)逼近直线的方法所产生的“阶梯” &…

C# 使用 MailKit 接收邮件(附demo)

C# 使用 MailKit 接收邮件(附demo) 介绍安装包(依赖)案例简单代码 获取附件核心代码完整代码 介绍一下POP3 介绍 MailKit 是一个开源的 C# 邮件处理库,用于在应用程序中发送和接收电子邮件。它提供了一个强大且易于使…

linux实时调度

面对陌生的知识体系,应该从什么角度来 简介 一、进程管理基本概念 在单处理器系统上,在给定时刻只有一个程序可以运行,在多处理器系统上,可以真正并行运行的进程数据,取决于物理CPU的数目; 进程优先级 …