Vue之axios请求

Vue之axios请求

axios请求, 是Vue前端框架非常重要的一部分, 今天我们就讲解axios请求, 到底有什么作用, 以及会告诉大家axios的常见用法。

axios请求, 是网页向后端发起请求, 后端吧数据给我们网页, 这是一个前后端交互的过程。当我们学会了axios, 我们可以实现前端和后端练习起来, 这个数据就是由后端来决定的, 而不是在前端写死了的。

如果我们在axios里面想要使用axios请求。
那我们需要在html里面引入axios:

<script src="axios.js"></script>

这个axios.js文件如何下载?
我们打开命令行cmd:
然后切换路径到桌面
最后我们用命令行下载东西
curl -o 文件名(包含后缀) 文件链接url

// 分别输入这两行命令在cmd里面
cd Desktop
curl -o axios.js http://121.40.144.4:880/AxiosResource/axios.js


我们返回到桌面, 会发现axios.js文件

我们将这个文件放入到项目当中:

这次我们学习需要用到以前已经下载好的vue.js和现在下载好的axios.js。

好了, 我们进入今天的主题, 今天的主题分为三个部分:

1.如何使用axios

2.在vue里面如何发起请求

3.使用axios完成学员管理系统

一、如何使用axios

代码:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><!-- 网络发起网络请求  那就必须引入这个库 --><!-- 1.引入库 --><script src="axios.js"></script><!-- 2.使用库 --><script>// 网页向后端发起请求  后端吧数据给我们网页 前后端交互// 引入进来了 就会有一个axios方法// 这个方法里面是一个对象 里面是键值对存储axios({// 一、我要向谁发请求// url就能存储发请求的后端url: "http://43.136.104.16:3002/chaxun",// 请求方式(GET, POST, PUT, DELETE等) 请求方法 不要加s 和vue里面的事件源要区分开来, 这两个不是一个东西// get 请求方式 可以大写也可以小写 常见的请求方式 get postmethod: "GET",// then方法 可以获取响应回来的数据 里面有一个回调函数// 里面有一个默认的形参}).then((res) => {// res获取到的数据很多 但是我们只需要data里面的数据console.log(res.data);});</script></body>
</html>

我们分析一下axios里面的一些参数:
当我们需要用axios请求的时候, 我们用到了axios({})这样的写法。
axios函数里面存的是一个对象objects(这个和python的字典还有Java的Hash很像)
在axios方法里面的对象里面的参数:

  1. url, 这个参数就是我目标要请求的后端数据。
  2. method, 请求方式(GET, POST, PUT, DELETE等) 请求方法 不要加s 和vue里面的事件源要区分开来, 这两个不是一个东西。
  3. params(只有GET请求才能够使用这个参数)。
  4. data(只有POST请求才能够使用这个参数)。
    注意: 3和4这两个, 在后面讲到学员管理系统的时候, 都会用到。

在axios()方法后面还有.then()方法, 在then里面是一种匿名函数的写法, then方法 可以获取响应回来的数据, 里面有一个回调函数, 里面有一个默认的形参

then((res) => {console.log(res);
});

我们在控制台里面看一看会打印什么内容:

我们很清晰的可以发现, 有三个字段, age年龄, id代表唯一标识的id号, name名字。
我们将网址放到网页上去看一看:

返回的就是我们分析的那三个字段。

二、在vue里面如何发起请求

用GET方法请求

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><div id="app"><button @click="findAll()">点击发起请求 获取用户数据</button></div><!-- 1.引用vue包 --><script src="vue.js"></script><!-- 2.引用axios包 --><script src="axios.js"></script><!-- 3.使用vue框架 --><script>new Vue({el: "#app",data: {// 数据源},// 你要发请求 肯定是需要做什么事情methods: {// 可以在这个事件里面发请求findAll(){axios({url: "http://43.136.104.16:3002/chaxun", // 请求地址method: "GET" // 请求方式}).then((res) => {console.log(res.data);});}}});</script></body>
</html>

结果:
在按钮点击之前, 控制台里面没有任何输出

在点击按钮之后

我们会发现, 有数据在控制台里面打印出来了, 没错, 这个就是我们使用axios来请求的后端的数据。
注意: 我们在then函数里面有个res.data的写法, 这里我们讲解一下, 因为这里面后端返回的数据, 是以json格式返回, json格式本就是一个对象(键值对的形式), 里面有一个data属性, 在data属性里面, 返回的很多个对象。

我们打印res看一看效果:

console.log(res);


里面就有data字段, 这就再一次印证了上面所说的那些。

那问题来了, 我们如何实现不点击按钮, 让浏览器一打开的时候, 自己获取数据呢?

这个其实很简单, 我们这里需要用到created方法
和methods属性同级, 下面写上created(){}

代码:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><div id="app"><button @click="findAll()">点击发起请求 获取用户数据</button></div><!-- 1.引用vue包 --><script src="vue.js"></script><!-- 2.引用axios包 --><script src="axios.js"></script><!-- 3.使用vue框架 --><script>new Vue({el: "#app",data: {// 数据源},// 你要发请求 肯定是需要做什么事情methods: {// 可以在这个事件里面发请求findAll(){axios({url: "http://43.136.104.16:3002/chaxun", // 请求地址method: "GET" // 请求方式}).then((res) => {console.log(res.data);});}},// 你一打开这个网页, 就让他自动执行created(){// 一打开网页, 就能够自动请求数据this.findAll();}});</script></body>
</html>

前面的代码不动, 就在后面写上这些代码:

// 你一打开这个网页, 就让他自动执行
created(){// 一打开网页, 就能够自动请求数据this.findAll();
}

结果:
打开网页之后

我们现在就可以直接获取数据啦!!!

三、使用axios完成学员管理系统

我们先看一看学员管理系统做出来的效果:

代码:
html标签部分:

<!-- 最外面的大盒子 --><div id="app"><div class="fun"><!-- 标题 --><h1>学员管理系统</h1><!-- 输入框和按钮 -->姓名<input type="text" v-model="name"/>年龄<input type="text" v-model="age"/><button @click="add()">点击添加学员</button><!-- 操作栏 --><div class="demo"><div class="item">学员id</div><div class="item">学员姓名</div><div class="item">学员年龄</div><div class="item">操作模块</div></div><!-- 内容 --><div class="demo" v-for="item in userdata" :key="item.id"><!-- 内容渲染指令 把数据里面的数据 渲染到页面上面 不是什么时候都需要写{{}}--><div class="item">{{item.id}}</div><div class="item">{{item.name}}</div><div class="item">{{item.age}}</div><!-- 传递参数 将id传递到函数里面去 --><div class="item"><button @click="deleteData(item.id)">删除</button></div></div></div></div><!-- 导包 --><script src="vue.js"></script><script src="axios.js"></script>

css部分:

* {margin: 0;padding: 0;
}.fun {width: 60%;/* height: 400px; */margin: auto;/* 阴影效果 */box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);border-radius: 10px;padding: 20px;
}h1 {text-align: center;/* 下外边距 */margin-bottom: 30px;
}.demo {display: flex;padding: 20px;border-bottom: 1px solid black;
}.item {/* 每个儿子属性站一份 */flex: 1;text-align: center;
}

javascript部分:

new Vue({el: "#app",// 数据源data: {userdata: null,name: "",age: ""},// 你要发请求 肯定是需要做什么事情methods: {// 可以在这个事件里面发请求findAll() {axios({url: "http://43.136.104.16:3002/chaxun", // 请求地址method: "GET" // 请求方式}).then((res) => {console.log(res.data);// 将后端拿过来的的数据, 存放到数据源里面this.userdata = res.data;});},// 添加数据add(){axios({url: "http://43.136.104.16:3002/xinzeng",method: "POST" ,// 请求方式是POST 绝大多数POST请求 需要传递参数进去data: {name: this.name, // 直接通过this.name获取你输入的名字age: this.age // 通过this.age获取你输入的年龄}// 当请求成功, 会执行then里面的代码}).then((res) => {console.log(res.data);// 添加成功后, 刷新界面this.findAll();this.name = "";this.age = "";}).catch((error) => {console.log(error);alert(error.response.data);});},// 删除数据, value就是学生的id号deleteData(value){axios({url: "http://43.136.104.16:3002/shanchu", // 请求地址method: "GET" ,// 请求方式params: {id: value}}).then((res) => {console.log(res.data);this.findAll();});}},// 你一打开这个网页, 就让他自动执行created() {// 一打开网页, 就能够自动请求数据this.findAll();}});

js种的三个方法, 1.findAll, 2.add, 3.deleteData
1.findAll

axios({url: "http://43.136.104.16:3002/chaxun", // 请求地址method: "GET" // 请求方式
}).then((res) => {console.log(res.data);// 将后端拿过来的的数据, 存放到数据源里面this.userdata = res.data;
});

这里是用GET方法请求的, 没有params和data传参, 存粹是从后端获取数据。

2.add

axios({url: "http://43.136.104.16:3002/xinzeng",method: "POST" ,// 请求方式是POST 绝大多数POST请求 需要传递参数进去data: {name: this.name, // 直接通过this.name获取你输入的名字age: this.age // 通过this.age获取你输入的年龄}
// 当请求成功, 会执行then里面的代码
}).then((res) => {console.log(res.data);// 添加成功后, 刷新界面this.findAll();this.name = "";this.age = "";
}).catch((error) => {console.log(error);alert(error.response.data);
});

这里是用POST方法请求的, 有data传参, 里面包含了name和age的参数, 就是添加一条包含名字和年龄的数据, id在后台会自动生成的(这个需要在后端代码里面写好), 执行这串代码, 会新增数据。
后面的catch((error) => {})这串代码, 就是打印错误信息, 当添加数据失败了, 会打印为什么失败, 什么原因导致无法添加数据(人性化操作)

3.deleteData

axios({url: "http://43.136.104.16:3002/shanchu", // 请求地址method: "GET" ,// 请求方式params: {id: value}
}).then((res) => {console.log(res.data);// 删除数据之后更新信息this.findAll();
});

这里是用方法GET请求的, params, 里面包含了id的参数, 就是删除数据, 是根据id号来删除对应的数据(这个需要在后端代码里面写好), 执行这串代码, 会删除数据。

学员管理系统的完整代码:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><style>* {margin: 0;padding: 0;}.fun {width: 60%;/* height: 400px; */margin: auto;/* 阴影效果 */box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);border-radius: 10px;padding: 20px;}h1 {text-align: center;/* 下外边距 */margin-bottom: 30px;}.demo {display: flex;padding: 20px;border-bottom: 1px solid black;}.item {/* 每个儿子属性站一份 */flex: 1;text-align: center;}</style></head><body><!-- 最外面的大盒子 --><div id="app"><div class="fun"><!-- 标题 --><h1>学员管理系统</h1><!-- 输入框和按钮 -->姓名<input type="text" v-model="name"/>年龄<input type="text" v-model="age"/><button @click="add()">点击添加学员</button><!-- 操作栏 --><div class="demo"><div class="item">学员id</div><div class="item">学员姓名</div><div class="item">学员年龄</div><div class="item">操作模块</div></div><!-- 内容 --><div class="demo" v-for="item in userdata" :key="item.id"><!-- 内容渲染指令 把数据里面的数据 渲染到页面上面 不是什么时候都需要写{{}}--><div class="item">{{item.id}}</div><div class="item">{{item.name}}</div><div class="item">{{item.age}}</div><!-- 传递参数 将id传递到函数里面去 --><div class="item"><button @click="deleteData(item.id)">删除</button></div></div></div></div><!-- 导包 --><script src="vue.js"></script><script src="axios.js"></script><script>new Vue({el: "#app",// 数据源data: {userdata: null,name: "",age: ""},// 你要发请求 肯定是需要做什么事情methods: {// 可以在这个事件里面发请求findAll() {axios({url: "http://43.136.104.16:3002/chaxun", // 请求地址method: "GET" // 请求方式}).then((res) => {console.log(res.data);// 将后端拿过来的的数据, 存放到数据源里面this.userdata = res.data;});},// 添加数据add(){axios({url: "http://43.136.104.16:3002/xinzeng",method: "POST" ,// 请求方式是POST 绝大多数POST请求 需要传递参数进去data: {name: this.name, // 直接通过this.name获取你输入的名字age: this.age // 通过this.age获取你输入的年龄}// 当请求成功, 会执行then里面的代码}).then((res) => {console.log(res.data);// 添加成功后, 刷新界面this.findAll();this.name = "";this.age = "";}).catch((error) => {console.log(error);alert(error.response.data);});},// 删除数据, value就是学生的id号deleteData(value){axios({url: "http://43.136.104.16:3002/shanchu", // 请求地址method: "GET" ,// 请求方式params: {id: value}}).then((res) => {console.log(res.data);this.findAll();});}},// 你一打开这个网页, 就让他自动执行created() {// 一打开网页, 就能够自动请求数据this.findAll();}});</script></body>
</html>

结果:
打开网页

新增数据:


删除数据(删除数据以后, 返回了id号):

以上就是vue的axios请求的所有内容了, 如果有哪里不懂的地方,可以把问题打在评论区, 大家多多交流互相学习, 欢迎随时来提问题!!!
如果我有写错的地方, 望大家指正, 也可以联系我, 让我们一起努力, 继续不断的进步.
学习是个漫长的过程, 需要我们不断的去学习并掌握消化知识点, 有不懂或概念模糊不理解的情况下,一定要赶紧的解决问题, 否则问题只会越来越多, 漏洞也就越老越大.
人生路漫漫, 白鹭常相伴!!!

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

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

相关文章

【算法篇】二叉树类(2)(笔记)

目录 一、Leetcode 题目 1. 左叶子之和 &#xff08;1&#xff09;迭代法 &#xff08;2&#xff09;递归法 2. 找树左下角的值 &#xff08;1&#xff09;广度优先算法 &#xff08;2&#xff09;递归法 3. 路径总和 &#xff08;1&#xff09;递归法 &#xff08;2…

H. Sakurako‘s Test

H. Sakurakos Test 原题 本题通过前缀和和二分可以解决, 原理并不是很困难, 但是比较难想到 我们只需要对每一个 x, 二分求出中位数, 预处理好即可, 二分的检查通过求k倍的x可以在调和级数的时间内实现 代码 #include <bits/stdc.h> #define int long longusing name…

mysql索引 -- 聚簇索引,非聚簇索引,如何查看linux下的数据库文件,普通/辅助索引(回表查询)

目录 聚簇索引和非聚簇索引 聚簇索引 介绍 示例 查看当前的数据库数据目录 表文件 非聚簇索引 介绍 myisam 示例 普通(辅助)索引 引入(回表查询) mysql索引结构详细介绍 -- mysql索引 -- 索引的硬件理解(磁盘,磁盘与系统),软件理解(mysql,与系统io,buffer pool),索…

基于SpringBoot的新冠检测信息管理系统的设计与实现

文未可获取一份本项目的java源码和数据库参考。 国内外在该方向的研究现状及分析 新型冠状病毒肺炎疫情发生以来&#xff0c;中国政府采取积极的防控策略和措施&#xff0c;经过两个多月的不懈努力&#xff0c;有效控制了新发病例的増长&#xff0c;本地传播已经趋于完全控制…

【Java】六大设计原则和23种设计模式

目录 一、JAVA六大设计原则 二、JAVA23种设计模式 1. 创建型模式 2. 结构型模式 3. 行为型模式 三、设计原则与设计模式 1. 设计原则 2. 设计模式 四、单例模式 1. 饿汉式 2. 懒汉式 四、代理模式 1. 什么是代理模式 2. 为什么要用代理模式 3. 有哪几种代理模式 …

并发面试合集

1.创建线程的方式 区分线程和线程体的概念&#xff0c;线程体通俗点说就是任务。创建线程体的方式&#xff1a;像实现Runnable、Callable接口、继承Thread类、创建线程池等等&#xff0c;这些方式并没有真正创建出线程&#xff0c;严格来说&#xff0c;Java就只有一种方式可以…

MySQl查询分析工具 EXPLAIN ANALYZE

文章目录 EXPLAIN ANALYZE是什么Iterator 输出内容解读EXPLAIN ANALYZE和EXPLAIN FORMATTREE的区别单个 Iterator 内容解读 案例分析案例1 文件排序案例2 简单的JOIN查询 参考资料&#xff1a;https://hackmysql.com/book-2/ EXPLAIN ANALYZE是什么 EXPLAIN ANALYZE是MySQL8.…

有问题未解决(9.28)

#include <stdio.h> int main() {int a 1;int b 2;int c 3;int arr[] { a,b,c };arr[0] 10;printf("%d\n", a);//打印结果为1&#xff1b;return 0; } 颠覆认知了&#xff0c;或许也没有颠覆 arr是一个int类型的数组&#xff0c;他存的就是一个数&…

Arch - 架构安全性_保密(Confidentiality)

文章目录 OverView导图保密保密强度与成本客户端加密密码存储与验证 Code总结 OverView 即使只限定在“软件架构设计”这个语境下&#xff0c;系统安全仍然是一个很大的话题。 接下来我们将对系统安全架构的各个方面进行详细分析&#xff0c;包括认证、授权、凭证、保密、传输…

JSP(Java Server Pages)基础使用二

简单练习在jsp页面上输出出乘法口诀表 既然大家都是来看这种代码的人了&#xff0c;那么这种输出乘法口诀表的这种简单算法肯定是难不住大家了&#xff0c;所以这次主要是来说jsp的使用格式问题。 <%--Created by IntelliJ IDEA.User: ***Date: 2024/7/18Time: 11:26To ch…

大厂AI必备数据结构与算法——链表(三)详细文档

冲冲冲&#xff01;开干 神马&#xff01;神马&#xff01;神马&#xff0c;一向让我们学习起来抓耳挠腮的数据结构课程竟然也有教程&#xff1f;还那么详细&#xff1f;&#xff1f;真的假的&#xff1f; 那么好&#xff0c;胡广告诉你是假的&#xff0c;哈哈哈哈哈哈哈哈哈…

走进上海郭培高定会馆:以冠珠华脉、华珍筑就至臻至性的艺术空间

“我热爱高级时装&#xff0c;因为她是一种生命的停驻。我希望我的高级时装成为馆藏级的精品&#xff0c;殿堂级的珍宝&#xff0c;成为传世杰作。” ——郭培 中国唯一一位法国高定公会受邀会员&#xff0c;曾荣登《TIME》时代周刊全球100位最具影响力人物榜单。纽约时报评价…

opencv学习:通过图像透视进行发票识别完整代码流程

概念&#xff1a; 使用OpenCV库实现图像的透视变换处理&#xff0c;以矫正图像中的透视失真。通过本实验&#xff0c;学习者将掌握图像处理的基本操作&#xff0c;包括图像的读取、显示、大小调整、灰度转换、二值化、轮廓检测、轮廓近似以及透视变换。 步骤&#xff1a; 1. …

vue3 通过 axios + jsonp 实现根据公网 ip, 查询天气信息

前提 安装 axios 的 jsonp 适配器。 pnpm install pingtou/axios-jsonp 简单使用说明&#xff1a;当与后端约定的请求 callback 参数名称不为为 callback 时&#xff0c;可修改。一般无需添加。 1. 获取当前电脑 ip 和城市信息 请求地址&#xff1a; https://whois.pconl…

【质优价廉】GAP9 AI算力处理器赋能智能可听耳机,超低功耗畅享未来音频体验!

当今世界&#xff0c;智能可听设备已经成为了流行趋势。随后耳机市场的不断成长起来&#xff0c;消费者又对AI-ANC&#xff0c;AI-ENC&#xff08;环境噪音消除&#xff09;降噪的需求逐年增加&#xff0c;但是&#xff0c;用户对于产品体验的需求也从简单的需求&#xff0c;升…

isilon存储node节点更换你必须知道的知识

最近一直想要写一篇文章是关于EMC Isilon 存储控制器方面的&#xff0c;是什么力量促使我要写这个文章呢&#xff1f;作为一个卖存储备件的资深搬运工&#xff0c;最近遇到了一些关于控制器方面的备件询价、备件更换方面的问题&#xff0c;每次都要花大量的时间给客户解释。解释…

【JVM】JVM执行流程和内存区域划分

文章目录 是什么JVM 执行流程内存区域划分堆栈程序计数器元数据区经典笔试题 是什么 Java 虚拟机 JDK&#xff0c;Java 开发工具包JRE&#xff0c;Java 运行时环境JVM&#xff0c;Java 虚拟机 JVM 就是 Java 虚拟机&#xff0c;解释执行 Java 字节码 JVM 执行流程 编程语言…

24年下重庆事业单位考试报名超详细流程

&#x1f388;提交报考申请 考生通过重庆市人力资源和社会保障局官网&#xff08;rlsbj.cq.gov.cn&#xff09;“热点服务”中“人事考试网上报名”栏进行报名。报名时间为2024年8月12日9:00—8月17日9:00。 &#x1f388;网上缴费 资格初审合格后&#xff0c;考生应在2024年8…

奇瑞汽车—经纬恒润 供应链技术共创交流日 成功举办

2024年9月12日&#xff0c;奇瑞汽车—经纬恒润技术交流日在安徽省芜湖市奇瑞总部成功举办。此次盛会标志着经纬恒润与奇瑞汽车再次携手&#xff0c;深入探索汽车智能化新技术的前沿趋势&#xff0c;共同开启面向未来的价值服务与产品新篇章。 面对全球汽车智能化浪潮与产业变革…

讯飞星火编排创建智能体学习(一)最简单的智能体构建

开篇 前段时间在华为全联接大会上看到讯飞星火企业级智能体平台的演示&#xff0c;对于拖放的可视化设计非常喜欢&#xff0c;刚开始以为是企业用户才有的&#xff0c;回来之后查了才知道个人用户也能使用。不过有关编排智能体的介绍特别少&#xff0c;也没有找到文档&#xf…