Vue开发实例(七)Axios的安装与使用

说明:

  1. 如果只是在前端,axios常常需要结合mockjs使用,如果是前后端分离,就需要调用对应的接口,获取参数,传递参数;
  2. 由于此文章只涉及前端,所以我们需要结合mockjs使用;
  3. 由于为了方便实现效果,在这篇文章里面使用的是一级菜单,对应的代码是:【Vue开发实例(六)实现左侧菜单导航 —>>> 动态实现一级菜单】中的代码
    在这里插入图片描述

axios和mockjs的安装与使用

  • 一、Axios
    • 1、安装axios
    • 2、安装mockjs
  • 二、数据请求
    • 1、get请求
    • 2、post请求
    • 3、添加数据
    • 4、修改
    • 5、删除
    • 6、查询
      • (1)无参查询
      • (2)有参查询

一、Axios

Axios 是一个基于 promise 的 HTTP 库,类似于我们常用的 ajax。
在开发过程中,特别是前后端分离的项目,比如前端用Axios、ajax请求后端数据,后端也许当前只给了接口文档,还没有数据的返回,导致前端无法进行测试、调试,现在可以使用mock.js拦截前端ajax请求,更加方便的构造你需要的数据,大大提高前端的开发效率。

1、安装axios

npm install axios --save

在main.js全局引入axios

import axios from 'axios';
Vue.prototype.$axios =axios;

2、安装mockjs

npm install mockjs --save-dev

在src下创建文件夹mock,并创建index.js文件,输入以下测试内容:

//引入mockjs
import Mock from 'mockjs'//使用mockjs模拟数据
Mock.mock('/test', {"res": 0,"data":{"datatime": "@datetime",//随机生成日期时间"weekday|1-7": 7,//随机生成1-7的数字"name": "@cname",//随机生成中文名字}
});

main.js引入此mock.js就可以进行全局拦截axios和ajax的请求了。

import './mock/index.js';

二、数据请求

1、get请求

在之前的Main1页面上编写代码
创建按钮

 <el-button @click="getTest">get数据</el-button>

创建axios请求方法

<script>
export default {name: "Main1",methods: {getTest() {this.$axios.get("/test").then((res) => {console.log(res.data);});},},
};
</script>

this.$axios.get(“/test”)this.$axios.get 表示使用get请求,“/test” 访问路径,刚好与之前mock.js定义的想吻合;
res 就是取得返回的数据集合,其中res.data就是我们定义好的返回数据。

浏览器中“右键-检查”或“F12”
在这里插入图片描述

2、post请求

添加post请求按钮

 <el-button @click="postTest">post测试1</el-button>

编写js post代码

postTest(){this.$axios.post("/post/test1",{id:1}).then(res=>{console.log(res.data)})
}

mock/index.js其中第2个参数指定为 post,如果我们用get请求则会提示404,只能用post

Mock.mock('/post/test1', 'post', function (param) {console.log('传入的参数为:', param.body)return {res: 1,msg: "success"}
});

效果展示
在这里插入图片描述

3、添加数据

按钮代码

<el-button @click="postAdd">add数据</el-button>

请求方法代码

postAdd(){this.$axios.post("/post/add",{id:1,name:'哈哈'}).then(res=>{console.log(res.data)})
}

Mockjs数据

// 定义userList数组
let userList = [];
Mock.mock('/post/add', 'post', function (param) {let body = JSON.parse(param.body) // 获取请求参数let id = parseInt(body.id)let flag = truefor (let item of userList) {if (item.id === id) flag = false // 判断id是否已经存在}// 如果id不存在if (flag) {userList.push({name: body.name,id})return {userList,res: 0,msg: '添加成功'}} else {return {userList,res: 1,msg: '添加失败'}}
});

效果展示

第一次发送请求,因为里面没有id为1的数据,所以添加成功
第二次发送请求,因为id=1的数据已经添加成功了,所以失败

在这里插入图片描述
重新换一个id就可以添加成功
在这里插入图片描述

4、修改

按钮代码

<el-button @click="postMod">mod数据</el-button>

请求代码

postMod(){this.$axios.post("/post/mod",{name:'哈哈',id:3}).then(res=>{console.log(res.data)})
}

mockjs数据

Mock.mock('/post/mod', 'post', function (param) {let body = JSON.parse(param.body) // 获取请求参数let id = parseInt(body.id)let flag = false, index = 0;for (let i in userList) {if (userList[i].id === id) {flag = true // 判断id是否已经存在,存在返回trueindex = i//对应数组的下标}}// 如果id存在则修改if (flag) {userList[index] = bodyreturn {userList,res: 0,msg: '修改成功'}} else {return {userList,res: 1,msg: '修改失败'}}
});

效果展示

因为第一次修改里面没有数据,所以修改失败
在这里插入图片描述

先点击 添加add,再点击 修改mod
在这里插入图片描述

5、删除

按钮代码

<el-button @click="postDel">del数据</el-button>

请求代码

postDel() {this.$axios.post("/post/del", { id: 1 }).then((res) => {console.log(res.data);});},

mockjs数据

Mock.mock('/post/del', 'post', function (param) {let body = JSON.parse(param.body) // 获取请求参数let id = parseInt(body.id)let flag = false, index = 0;for (let i in userList) {if (userList[i].id === id) {flag = true // 判断id是否已经存在,存在返回trueindex = i//对应数组的下标}}// 如果id存在则删除if (flag) {userList.splice(index, 1);return {userList,res: 0,msg: '删除成功'}} else {return {userList,res: 1,msg: '删除失败'}}
});

效果展示

先添加数据,再删除数据

在这里插入图片描述

6、查询

按钮代码

<el-button @click="postQuery">query无参数据</el-button><br /><br />
<el-button @click="postQuery2">query有参数据</el-button><br /><br />

请求代码,分别是没有参数的查询全部,有id参数的根据id来查询

(1)无参查询

postQuery(){this.$axios.post("/post/query",{}).then(res=>{console.log(res.data)})
}

(2)有参查询

postQuery2(){this.$axios.post("/post/query",{id:1}).then(res=>{console.log(res.data)})
}

mockjs数据

Mock.mock('/post/query', 'post', function (param) {let body = JSON.parse(param.body) // 获取请求参数let id = parseInt(body.id)if (!id) {//如果id不存在,则直接返回全部return {userList,res: 0,msg: '查询成功'}}//idfor (let item of userList) {if (item.id === id) {return {userList: [item],res: 0,msg: '查询成功'}}}// 如果id不存在则返回失败return {userList: [],res: 1,msg: '查询失败'}
});

效果展示

按照图示步骤执行

  1. 首先进行无参查询,查询全部,返回是空
  2. 其次是添加一条数据
  3. 接着带参查询id=1的数据

在这里插入图片描述

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

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

相关文章

动态规划(算法竞赛、蓝桥杯)--分组背包DP

1、B站视频链接&#xff1a;E16 背包DP 分组背包_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N110; int v[N][N],w[N][N],s[N]; // v[i,j]:第i组第j个物品的体积 s[i]:第i组物品的个数 int f[N][N]; // f[i,j]:前i组物品&#xff0c;能放…

H12-821_106

106.如图所示&#xff0c;RTA的GEO/0/0、GEO/0/1接口分别连接部门1和2&#xff0c;其网段分别为10.1.2.0/24、10.1.3.0/24网段&#xff0c;为限制部门1和2之间的相互访间&#xff0c;在RTA上部署traffic-filter&#xff0c;以下哪些部署方式是正确&#xff1f; A.配置ACL3000拒…

scanBasePackages原理和使用范例

scanBasePackages原理和使用范例 目录概述需求&#xff1a; 设计思路实现思路分析1.正文 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,…

JavaWeb--JDBC

一&#xff1a;JDBC概述 1.概念 JDBC 就是使用Java语言操作关系型数据库的一套API 全称&#xff1a;( Java DataBase Connectivity ) Java 数据库连接 2.本质 官方&#xff08; sun 公司&#xff09;定义的一套操作所有关系型数据库的规则&#xff0c;即接口&#xff1b;各个…

【无标题】TMGM官网平台切尔西足球俱乐部合作

TMGM作为一家在三大洲均设有办事处的行业领导者&#xff0c;TMGM 被视为可靠的差价合约交易提供商&#xff0c;其重点是监管合规、技术创新与他联系➕&#x1f6f0;️TMGM818卓越的客户服务。 切尔西足球俱乐部在亚太地区拥有庞大的球迷群体&#xff0c;并在该地区建立了多种亚…

给自己的2023年写了个年终总结

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 2023年的余额已经严重不足&#xff0c;再有5天&#xff0c;2023年也将成为历史中的年份了。 从网上看到很多小伙伴已经进入了年终总结的模式&#xff0c;我也忍不住想&#xff0c;今年收获了什么&#xff1f;又失去了…

mac iNode 断开后没网 经测试 后台还在运行

界面断开&#xff0c;但是连不上网&#xff1a;实际上可能是服务在后台还在运行 解决方式&#xff1a;终端执行命令 &#xff0c;手动停止iNode服务 sudo /Library/StartupItems/iNodeAuthService/iNodeAuthService stop 停掉之后&#xff0c;有可能连不上网&#xff0c;断开wi…

【博图TIA-Api】通过Excel自动新建文件夹和导入FB块

【博图TIA-Api】通过Excel自动新建文件夹和导入FB块 说明思路准备获取Excel表格内文件名和FB块名等信息新建文件夹部分筛分获取的文件夹数据&#xff0c;去掉重复内容创建文件夹 导入FB块导出FB块的xml文件查找需要放置的文件夹导入块 说明 续上一篇文章&#xff0c;这次是根据…

【C语言】熟悉文件顺序读写函数

前言 本篇详细介绍了 文件顺序读写常用函数&#xff0c;快来看看吧~ 欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 前言 ​编辑 文件顺序读写函数 fgetc函数 示例 fputc函数 逐个字符写入 写入26个字母 文…

Vue全家桶:vue2+vue3全部搞懂:第六篇,了解Vue生命周期,如何一进页面就马上发送请求、渲染页面

前提&#xff0c;建议先学会前端几大基础&#xff1a;HTML、CSS、JS、Ajax&#xff0c;不然不好懂 这一专栏知识将一次性将vue、vue2、vue3全部讲明白 一、啥是Vue的生命周期&#xff0c;一个Vue生命周期有哪几个阶段&#xff1f; 简单来说生命周期就是从【你&#xff08;new…

11:日志分析系统ELK|Elasticsearch|kibana

日志分析系统ELK&#xff5c;Elasticsearch&#xff5c;kibana 日志分析系统ELKELK概述Elasticsearch安装Elasticsearch部署Elasticsearch集群Elasticsearch插件 熟悉Elasticsearch的API调用_cat API创建 tedu 索引使用 PUT 方式增加数据查询数据修改数据删除数据 KibanaKibana…

【C++】用命名空间避免命名冲突

&#x1f338;博主主页&#xff1a;釉色清风&#x1f338;文章专栏&#xff1a;C&#x1f338;今日语录&#xff1a;如果神明还不帮你&#xff0c;说明他相信你。 &#x1fab7;文章简介&#xff1a;这篇文章是结合谭浩强老师的书以及自己的理解&#xff0c;同时加入了一些例子…