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,依旧正常渲染数据🤓

相关推荐
FakeOccupational7 分钟前
【电路笔记 通信】香农公式(Shannon-Hartley Theorem/香农-哈特利定理)证明(暂记)
笔记
百锦再1 小时前
Java中的反射机制详解:从原理到实践的全面剖析
java·开发语言·jvm·spring boot·struts·spring cloud·kafka
普通网友2 小时前
PL/SQL语言的正则表达式
开发语言·后端·golang
winfreedoms2 小时前
Puppypi——树莓派5主板学习笔记
笔记·学习
想用offer打牌2 小时前
一站式了解火焰图的基本使用
后端·面试·架构
蒸蒸yyyyzwd2 小时前
cpp八股学习笔记
笔记·学习
小王同学^ ^2 小时前
从零开发一个操作系统(1.3) 如何使用ContextOS 智能名片打造个人IP
后端
Penge6662 小时前
Go 泛型里的 ~[]E 到底是什么
后端
树码小子3 小时前
图书管理系统(5)强制登陆(后端实现)
spring boot·mybatis·图书管理系统
丹牛Daniel3 小时前
Java解决HV000183: Unable to initialize ‘javax.el.ExpressionFactory‘
java·开发语言·spring boot·tomcat·intellij-idea·个人开发