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

Vue使用axios实现调用后端接口

 准备后端接口

首先,我已经写好一个后端接口用来返回我的用户数据,并用Postman测试成功如下:

 以我的接口为例,接口地址为:http://localhost:8080/user/selectAll

返回Json为:

{"code": "200","msg": "请求成功","date": [{"id": 1,"username": "乐乐乐","usersex": "女","userborn": "2002-03-15","useraddress": "地球","userphone": "18055985888","useremail": "123@qq.com","avatar": "assets/img/userimg.jpg","state": true,"loginID": 1},{"id": 4,"username": "nimo","usersex": "男","userborn": null,"useraddress": null,"userphone": "18058955635","useremail": null,"avatar": "assets/img/猎鹰_proc.jpg","state": false,"loginID": 0}]
}

 axios基础方法

安装好axios,不会的话看一下这个文章:VS code vue 使用ElementUI和axios_vs code使用axios-CSDN博客

在需要接口数据的前端页面中加入下面的代码:

<script>
import axios from "axios"export default {data () {return {users: [] //用来装返回的数组数据}},mounted () {axios.get('http://localhost:8080/user/selectAll').then(res => {console.log(res.data)this.users = res.data.date})}
};</script>

如果控制台输出成功那么就成功了

 封装进阶

还可以再进一步,对axios做一个拦截器处理,对返回的数据和请求做一个统一处理

新建一个名为request.js的文件,代码如下:

import router from "@/router"
import axios from "axios"const request = axios.create({baseURL: 'http://localhost:8080',timeout: 30000
})//response拦截器
//发送请求时统一处理,如加token
request.interceptors.request.use(config => {config.headers['Content-Type'] = 'application/json;charset=utf-8'let user = JSON.parse(localStorage.getItem("hon-admin") || '{}')config.headers['token'] = user.token//设置请求头return config
}, error => {console.error('request error: ' + error)return Promise.reject(error)
})//response拦截器
//接口响应后统一处理结果
request.interceptors.response.use(response => {let res = response.data//兼容服务端返回的字符串数据if (typeof res === 'string') {res = res ? JSON.parse(res) : res}//没有权限跳转到登录if (res.code === '401') {router.push('/login')}return res},error => {console.error('response error:' + error)return Promise.reject(error)}
)export default request

这是,前端代码为:

<script>
//引用request文件
import request from "@/utils/request"export default {data () {return {logins: []}},mounted () {request.get('/user/selectAll').then(res => {this.logins = res.dateconsole.log(this.logins)})}
};</script>

这样跟规范,代码也更加简洁

相关文章:

  • 智慧商砼搅拌车安监运营管理的创新实践
  • 【python008】excel表格转markdown文档表格
  • 【WEEK14】 【DAY4】Swagger Part 2【English Version】
  • ubuntu18.04 报错:fatal error: execution
  • 浏览器修改后端返回值
  • NKCTF 2024 webshell_pro
  • CI/CD:持续集成/持续部署
  • java web爬虫
  • 【OpenHarmony】TypeScript 语法 ③ ( 条件语句 | if else 语句 | switch case 语句 )
  • [数据集][目标检测]老鼠检测数据集VOC+YOLO格式4107张1类别
  • 反激电源压敏电阻设计
  • Python Config 用法:探索配置文件的艺术
  • 基于 IP 的 DDOS 攻击实验
  • 3.基础光照
  • 进程间通信(27000字超详解)
  • Django 博客开发教程 8 - 博客文章详情页
  • express如何解决request entity too large问题
  • HashMap剖析之内部结构
  • jQuery(一)
  • oschina
  • scala基础语法(二)
  • spring boot下thymeleaf全局静态变量配置
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • webpack+react项目初体验——记录我的webpack环境配置
  • webpack入门学习手记(二)
  • 读懂package.json -- 依赖管理
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 给Prometheus造假数据的方法
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 用element的upload组件实现多图片上传和压缩
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 正则表达式
  • 智能合约开发环境搭建及Hello World合约
  • #DBA杂记1
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $.ajax()方法详解
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (ZT)出版业改革:该死的死,该生的生
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (转)四层和七层负载均衡的区别
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET MAUI Sqlite程序应用-数据库配置(一)
  • .NET 事件模型教程(二)
  • @Autowired 与@Resource的区别
  • @EventListener注解使用说明
  • [ C++ ] STL_list 使用及其模拟实现
  • [ C++ ] STL---string类的使用指南
  • [1159]adb判断手机屏幕状态并点亮屏幕
  • [20170705]diff比较执行结果的内容.txt