springboot和vue:十一、Axios网络请求的安装引入与使用、跨域问题解决(CORS)

Axios简介与安装

  • Axios是一个基于promise的网络请求库,作用于node.js和浏览器中
  • Axios在浏览器端使用XMLHttpRequests发送网络请求,并自动完成json数据的转换
  • 安装:npm install axios
  • 官方文档:https://www.axios-http.cn/

Axios基础语法

get请求

当参数比较少时,直接在路径里面用问号拼接传入。

then里面的是个回调函数,原始形态是如下:

复制代码
    axios.get("/user?id=1234")
    .then(function(response){
      //处理成功的情况,走then里面的函数
      console.log(response);
    })
    .catch(function(error){
      //处理错误的情况,走catch里面的函数
      console.log(error);
    })
    .then(function(){
      //总会执行这里面的函数
    });

当参数比较多时,可以使用params传入。

复制代码
    axios.get("/user",{
      params:{
        id:12345
      }
    })
    .then(function(response){
      //处理成功的情况,走then里面的函数
      console.log(response);
    })
    .catch(function(error){
      //处理错误的情况,走catch里面的函数
      console.log(error);
    })
    .then(function(){
      //总会执行这里面的函数
    });

但因为回调函数的作用域改变,如果想要在axios里面使用this指针,会报错undefinded,所以更经常的是如下箭头函数的形式,使得回调函数的作用域和其父级相同。

复制代码
axios.get("/user/findAll")
      .then((response)=> {
        console.log(response);}
        )
      .catch(function (error) {
        console.log(error);
      })
      .then(function () {
        console.log("请求成功发送");
      });

post请求

axios会自动把请求体里的数据,在这里即username和password字段,转成json后传给后端。

复制代码
axios.post("/user",{
      username: 'shanshan',
      password: '12345'
    })
    .then(function(response){
      //处理成功的情况,走then里面的函数
      console.log(response);
    })
    .catch(function(error){
      //处理错误的情况,走catch里面的函数
      console.log(error);
    })
    .then(function(){
      //总会执行这里面的函数
    });

支持async/await用法

复制代码
    async function getUser() {
      try {
        const response = await axios.get('user?id=12345');
        console.log(response);
      } catch (error) {
        console.error(error);
      }
    }

跨域问题

同源策略与CORS

  • 同源策略:为了保证浏览器的安全,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。
  • 同源:即两个页面具有相同的协议、主机、端口号。
  • 为了解决跨域问题,CORS制定了一个技术标准,使得可以在不破坏既有规则的前提下,通过后端服务器实现CORS接口,从而实现跨域通信。
  • CORS将请求分为两类:简单请求和非简单请求。

GET、POST、application/x-www-form-urlencoded、multipart/form-data、text/plain等常见的请求属于简单请求。
在后端的controller类上面加一个@CrossOrigin注解,即可使得控制器内所有请求都通过跨域问题。

Axios引入与使用

在main.js里写上

复制代码
import axios from 'axios';
axios.defaults.baseURL = 'http://localhost:8088'
Vue.prototype.$http = axios

在App.vue里发送axios请求,一般在页面被挂载前就发送

复制代码
export default {
  name: 'App',
  data: function () {
    return {
      movies: [
        { id: 1, title: "金刚狼1", rating: 8.7 },
        { id: 2, title: "金刚狼2", rating: 8.8 },

      ]
    }
  },
  created: function () {
    this.$http.get("/user/findAll")
      .then((response)=> {
        console.log(response);
      })
      .catch(function (error) {
        console.log(error);
      })
      .then(function () {
        console.log("请求成功发送");
      });
  },
  mounted: function () {
    console.log("app被挂载完毕");
  },
  components: {
    Movie
  }
}
相关推荐
Highcharts.js8 分钟前
缺失数据可视化图表开发实战|Highcharts创建人员出生统计面积图表示例
开发语言·前端·javascript·信息可视化·highcharts·图表开发
LaughingZhu7 小时前
Product Hunt 每日热榜 | 2026-05-21
前端·人工智能·经验分享·chatgpt·html
怕浪猫7 小时前
Electron 开发实战(一):从零入门核心基础与环境搭建
前端·electron·ai编程
Mahir087 小时前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
小鹏linux8 小时前
Ubuntu 22.04 部署开源免费具有精美现代web页面的Casdoor账号管理系统
linux·前端·ubuntu·开源·堡垒机
RyFit8 小时前
SpringAI 常见问题及解决方案大全
java·ai
石山代码8 小时前
C++ 内存分区 堆区
java·开发语言·c++
前端若水9 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
绝知此事9 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
Bigger9 小时前
mini-cc:一个轻量级 AI 编程助手的诞生
前端·ai编程·claude