1天搞定SpringBoot+Vue全栈开发 (7)Axios网络请求

简介: 1天搞定SpringBoot+Vue全栈开发 (7)Axios网络请求

1.Axios的使用

5f94f865dc264dfa912be0d338bd1c73.jpg

https://www.axios-http.cn/

c7d9dc4fa0e74b23857168206aa85316.jpg

33cd3a376f9048618e4b9034905e512e.jpg

ff26518b59884eaf9caac6ab34c9aeb8.jpg

08319e8ce35644d98d741e83787e89ac.jpg

2.与vue整合

095099a90d6c4ebb9c381459dcdf2378.jpg

App.vue:

<template>
  <div id="app">
    <Movie
      v-for="movie in movies"
      :key="movie.id"
      :title="movie.title"
      :rating="movie.rating"
    ></Movie>
    <Hello></Hello>
  </div>
</template>
 
<script>
import Movie from "./components/Movie.vue";
import Hello from "./components/Hello.vue";
import axios from "axios";
 
export default {
  name: "App",
  data: function () {
    return {
      movies: [
        { id: 1, title: "金刚狼1", rating: 9.1 },
        { id: 2, title: "金刚狼2", rating: 9.2 },
        { id: 3, title: "金刚狼3", rating: 9.3 },
      ],
    };
  },
  created: function () {
    axios.get("http://localhost:8088/user/findAll").then((res) => {
      console.log(res.data);
    });
  },
  mounted: function () {
    console.log("App被挂载完毕");
  },
  components: {
    Movie,
    Hello,
  },
};
</script>
 
<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>


Movie.vue:

<template>
  <div>
    <h1>{{ title }}</h1>
    <span>{{ rating }}</span>
    <button @click="funSc">点击收藏</button>
  </div>
</template>
<script>
export default {
  name: "Movie",
  props: ["title", "rating"],
  data: function () {
    return {};
  },
  created: function () {
    console.log("Movie组件被创建了");
  },
  methods: {
    funSc() {
      alert("收藏成功");
    },
  },
};
</script>


测试:

84b2ee9de6064ddaa786cd9feb60795e.jpg

发送网络请求:

打开idea中的mpdemo,并把后端端口改为8088(因为前端已经占用了8080端口)

server.port=8088

启动idea项目:

61c8caa0f2c644dfac1e1b5f24e1f4e7.jpg

此时,一个是8080端口,一个是8088端口,会出现跨域问题


3.跨域

35d7b3f5379a4d91a5700034f35f3751.jpg

eeecb6f1161a475a864d4e9e7ff9b83a.jpg

555c02403fe7445790dfb5cc46f997aa.jpg

03349c32dd1a43ab973cbe731d65af69.jpg

d20d4b3707c641a39ab21a17ad7484b9.jpg

231f6994a4d84a7e96633fb7de3acc71.jpg

4bda4f6725134f2892b953584e48f788.jpg

86517bba0350454cbee886b491b83912.jpg

在8080端口就可以接收到后端的信息

在UserController中加入@CrossOrigin

测试:此时在8080端口就可以接收到后端的信息了

e16e60aed77d45f2bfafc49f66c27abf.jpg

拿到后端的数据并显示在前端

Hello.vue:

<template>
  <div>
    <el-table
      :data="tableData"
      style="width: 100%"
      :row-class-name="tableRowClassName"
    >
      <!-- 第一列 -->
      <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="birthday" label="生日"> </el-table-column>
    </el-table>
    <i class="fa fa-camera-retro"></i>
    <el-date-picker v-model="value1" type="birthday" placeholder="选择日期">
    </el-date-picker>
  </div>
</template>
 
<script>
import axios from "axios";
export default {
  methods: {
    tableRowClassName({ row, rowIndex }) {
      if (rowIndex === 1) {
        return "warning-row";
      } else if (rowIndex === 3) {
        return "success-row";
      }
      return "";
    },
  },
  // 组件被创建的时候,该函数自动调用
  created: function () {
    axios.get("http://localhost:8088/user/findAll").then((response) => {
      this.tableData = response.data;
    });
  },
  data() {
    return {
      tableData: [],
      value1: "",
    };
  },
};
</script>
 
<style>
.el-table .warning-row {
  background: oldlace;
}
 
.el-table .success-row {
  background: #f0f9eb;
}
</style>


App.vue:

<template>
  <div id="app">
    <Movie
      v-for="movie in movies"
      :key="movie.id"
      :title="movie.title"
      :rating="movie.rating"
    ></Movie>
    <Hello></Hello>
  </div>
</template>
 
<script>
import Movie from "./components/Movie.vue";
import Hello from "./components/Hello.vue";
import axios from "axios";
 
export default {
  name: "App",
  data: function () {
    return {
      movies: [
        { id: 1, title: "金刚狼1", rating: 9.1 },
        { id: 2, title: "金刚狼2", rating: 9.2 },
        { id: 3, title: "金刚狼3", rating: 9.3 },
      ],
    };
  },
  created: function () {},
  mounted: function () {
    console.log("App被挂载完毕");
  },
  components: {
    Movie,
    Hello,
  },
};
</script>
 
<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>
 


测试:此时可以拿到后端的数据并显示在前端了

720af9b928f24a25a29e885989b10661.jpg

相关文章
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
143 1
|
17天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
95 62
|
1月前
|
缓存 JavaScript 搜索推荐
|
15天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
34 2
|
16天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
40 2
|
18天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
29天前
|
前端开发 JavaScript 安全
在vue前端开发中基于refreshToken和axios拦截器实现token的无感刷新
在vue前端开发中基于refreshToken和axios拦截器实现token的无感刷新
82 4
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用
【10月更文挑战第8天】本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,通过 Spring Initializr 创建并配置 Spring Boot 项目,实现后端 API 和安全配置。接着,使用 Ant Design Pro Vue 脚手架创建前端项目,配置动态路由和菜单,并创建相应的页面组件。最后,通过具体实践心得,分享了版本兼容性、安全性、性能调优等注意事项,帮助读者快速搭建高效且易维护的应用框架。
40 3
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用
【10月更文挑战第7天】本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,通过 Spring Initializr 创建 Spring Boot 项目并配置 Spring Security。接着,实现后端 API 以提供菜单数据。在前端部分,使用 Ant Design Pro Vue 脚手架创建项目,并配置动态路由和菜单。最后,启动前后端服务,实现高效、美观且功能强大的应用框架。
40 2
|
14天前
|
JavaScript NoSQL Java
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
29 0