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

news/2024/7/10 3:20:48 标签: spring boot, vue.js, 后端, java, 前端, springboot, vue

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
  }
}

http://www.niftyadmin.cn/n/5061407.html

相关文章

黑豹程序员-架构师学习路线图-百科:HTML-网页三剑客

为什么需要HTML 在网站技术发达之前,千年来我们获取信息是通过书籍。电脑流行后我们看文章、小说通过txt文件。看图通过单独的图片流量工具看单个的图片文件。 而HTML把文字和图片一起展示,让今天的电子书成为可能。 另外一点,我们的信息是…

yolov8 opencv模型部署(C++版)

yolov8 opencv模型部署(C 版) 使用opencv推理yolov8模型,仅依赖opencv,无需其他库,以yolov8s为例子,注意: 使用opencv4.8.0 !使用opencv4.8.0 !使用opencv4.8.0 &#…

【优秀学员统计】python实现-附ChatGPT解析

1.题目 优秀学员统计 知识点排序统计编程基础 时间限制: 1s 空间限制: 256MB 限定语言:不限 题目描述: 公司某部门软件教导团正在组织新员工每日打卡学习活动,他们开展这项学习活动已经一个月了,所以想统计下这个月优秀的打卡员工。每个员工会对应一个id,每天的打卡记录记录…

测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)

文章目录 一、任务描述二、指标分析2.1 TP/FP/FN/TN2.2 精准率2.3 召回率 三、接口处理四、数据集处理五、开始计算指标五、实用工具5.1 移动文件5.2 可视化JSON标签5.3 可视化TXT标签 一、任务描述 通过给定的算法接口,对算法的输出(置信度、检测框、告…

BUUCTF-WEB-刷题记录

题目地址 https://buuoj.cn/challenges[HITCON 2017]SSRFme 代码理解 进入主页后发现是代码审计/ escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数— 抑制错误输出 mkdir — 创建目录 chdir 更改目录 shell_exec — 通过 shell 环境执行命令&#x…

JavaSE学习之--抽象类和接口

💕"没有眼泪我们就会迷路,彻底变成石头,我们的心会变成冰凌,吻会变成冰块。"💕 作者:Mylvzi 文章主要内容:JavaSE学习之--抽象类和接口 一.抽象类 1.抽象类的定义 我们知道&#x…

[NOIP2011 提高组] 选择客栈

[NOIP2011 提高组] 选择客栈 题目描述 丽江河边有 n n n 家很有特色的客栈,客栈按照其位置顺序从 1 1 1 到 n n n 编号。每家客栈都按照某一种色调进行装饰(总共 k k k 种,用整数 0 ∼ k − 1 0 \sim k-1 0∼k−1 表示)&am…

一维数组和二维数组的使用(一)

目录 导读1. 一维数组1.1 一维数组的创建1.2 数组的初始化1.3 一维数组的使用1.4 一维数组在内存中的存储 2. 二维数组2.1 二维数组的创建2.2 二维数组的初始化2.3 二维数组的使用2.4 二维数组在内存中的存储 博主有话说 导读 本篇主要讲解一维数组和二维数组的创建和使用&…