SpringBoot快速入门笔记(6)

文章目录

Axios网络请求

1、简介

项目开发中,前端页面需要的数据往往要从服务器端获取,这必然涉及到和服务器的通信

Axios基于promise网络请求库,作用于node.js和浏览器中;在浏览器端使用XMLHttpRequests发送网络请求,并能自动完成JSON数据的转换

安装:npm install axios

2、导入

在终端下载

可以选择在特定组件导入,也可以全局导入,在main.js

javascript 复制代码
import axios from 'axios'

3、网络请求

可以在官方文档查看使用案例

这里使用我们之前写好的UserController的后端,用浏览器测试下localhost/user/findAll接口😀{后端端口我定义的是80}

可以看到还是正常拿到了数据,我们其实是通过浏览器输入发送的请求,这里采用axios帮我们发送网络请求,例如在App.vue组件中我们让其在创建时就发送请求并打印

可以F12看到findAll爆红了,请求不到,这是由于我们没有说明这个端口,准确的来说应该是http://localhost:80/user/findAll🤓

修改后刷新继续查看,发现还是爆红,打开控制台看报错原因

javascript 复制代码
created:function(){
    axios.get("http://localhost:80/user/findAll").then(function(response){
      console.log(response)
    })			 }

4、跨域问题

上面的报错其实是跨域问题

为了保证浏览器的安全,不同源的客户端脚本在没有明确授权下,不能读写对方资源,称为同源策略(Sameoriginpolicy)

同源:两个页面具有相同的协议,主机和端口号

所以我们要解决这个问题,就是授权即可😮

CORS(Cross-Origin Resource Sharing)由W3C指定的一种跨域资源共享技术标准,目的就是为了解决前端的跨域请求==>让后端实现CORS接口

在Spring Boot中配置CORS:

①全局配置:可以添加配置类CorsConfig 实现 WebMvcConfigurer接口

②局部配置:在控制器前添加@CrossOrigin

由于我们这里只是测试UserController,所以单独注解即可

重启项目,可以发现这次访问到数据了 😎

5、数据渲染

我们拿到数据后,可以把数据渲染到页面上

这里新建AxiosTest.vue组件,从elementUI官网拉一个表格过来使用,删掉tableData的东西

javascript 复制代码
<template>
    <el-table
      :data="tableData"
      style="width: 100%">
      <el-table-column
        prop="date"
        label="日期"
        width="180">
      </el-table-column>
      <el-table-column
        prop="name"
        label="姓名"
        width="180">
      </el-table-column>
      <el-table-column
        prop="address"
        label="地址">
      </el-table-column>
    </el-table>
  </template>

  <script>
    export default {
      data() {
        return {
          tableData: []
        }
      }
    }
  </script>

为了避免多次导入,我们这里还是在全局配置main.js中加上import axios from 'axios'

在新组建里重新编写,并将数据赋值:

发现还是报错了,这里涉及到js作用域的问题,只需要使用箭头函数就行:


可以发现这一次没有报错,注意我们的数据参数是id,username,password,birthday,将AxiosTest组件的表格参数变一下

javascript 复制代码
<template>
    <el-table
      :data="tableData"
      style="width: 100%">
      <el-table-column
        prop="id"
        label="编号"
        width="180">
      </el-table-column>
      <el-table-column
        prop="username"
        label="姓名"
        width="180">
      </el-table-column>
      <el-table-column
        prop="password"
        label="密码">
      </el-table-column>
      <el-table-column
        prop="birthday"
        label="生日">
    </el-table>
  </template>

浏览器运行发现数据已经渲染到页面表格中了😜

6、全局配置

每个组件都要导入axios所以我们在main.js中导入,这串http字符串其实也可以简化,在main.js中:

javascript 复制代码
import axios from 'axios'
axios.defaults.baseURL="http://localhost:80"
Vue.prototype.$http = axios

再对应修改AxiosTest组件里的东西,用$http指代axios,依旧正常渲染数据🤓

相关推荐
落羽凉笙8 小时前
Python学习笔记(3)|数据类型、变量与运算符:夯实基础,从入门到避坑(附图解+代码)
笔记·python·学习
盖世英雄酱581369 小时前
Java 组长年终总结:靠 AI 提效 50%,25 年搞副业只赚 4k?
后端·程序员·trae
+VX:Fegn08959 小时前
计算机毕业设计|基于springboot + vue在线音乐播放系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
code bean10 小时前
Flask图片服务在不同网络接口下的路径解析问题及解决方案
后端·python·flask
+VX:Fegn089510 小时前
计算机毕业设计|基于springboot + vue律师咨询系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
努力的小郑10 小时前
2025年度总结:当我在 Cursor 里敲下 Tab 的那一刻,我知道时代变了
前端·后端·ai编程
hssfscv10 小时前
Javaweb学习笔记——后端实战2_部门管理
java·笔记·学习
于越海11 小时前
材料电子理论核心四个基本模型的python编程学习
开发语言·笔记·python·学习·学习方法
我命由我1234511 小时前
开发中的英语积累 P26:Recursive、Parser、Pair、Matrix、Inset、Appropriate
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
困知勉行198511 小时前
springboot整合redis
java·spring boot·redis