Vue--Axios详解

news2024/11/28 20:57:33

一、Axios是什么?

Axios是一种异步请求技术,核心作用就是用来给页面 发送异步请求的,并获取对应数据在页面中的渲染,是页面局部更新的Ajax封装来的。

特性

  • 从浏览器创建 XMLHttpRequests
  • 从 node.js 创建 http 请求
  • 支持 Promise API
  • 拦截请求和响应
  • 转换请求和响应数据
  • 取消请求
  • 自动转换JSON数据
  • 客户端支持防御XSRF

二、Controller层注解详解

@RequestMapping

@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径;用于方法上,表示在类的父路径下追加方法上注解中的地址将会访问到该方法,此处需注意@RequestMapping用在类上可以没有,但是用在方法上必须有。

@ResponseBody 的作用其实是将 java 对象转为 json 格式的数据。@ResponseBody 注解的作用是将 controller 的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到 response对象的 body 区,通常用来返回 JSON 数据或者是 XML 数据。

@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用,通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。

该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

@RequestBody是作用在形参列表上,用于将前台发送过来固定格式的数据【xml格式 或者 json等】封装为对应的 JavaBean 对象,
封装时使用到的一个对象是系统默认配置的 HttpMessageConverter进行解析,然后封装到形参上。

  • @PostMapping 等价于 @RequestMapping(method = RequestMethod.POST)

  • @GetMapping 等价于 @RequestMapping(method = RequestMethod.GET)

  • @PutMapping 等价于 @RequestMapping(method = RequestMethod.PUT)

  • @DeleteMapping 等价于 @RequestMapping(method = RequestMethod.DELETE)

  • 1、@Controller @Controller 用来响应页面,表示当前的类为控制器。 2、@RestController @RestController 是@ResponseBody和@Controller的结合 表明当前类是控制器且返回的是一组数据,不是页面 3、@Autowired 这个注解的作用是将其他的类,接口引入,类似于之前的类的初始化等,用这个注解,类中或接口的方法就可以直接调用了。 4、@RequestMapping 当前台界面调用Controller处理数据时候告诉控制器怎么操作 作用:URL映射。 5、@GetMapping @RequestMapping(method = RequestMethod.GET)的简写 作用:对应查询,表明是一个查询URL映射 6、@PostMapping @RequestMapping(method = RequestMethod.POST)的简写 作用:对应增加,表明是一个增加URL映射 7、@PutMapping @RequestMapping(method = RequestMethod.PUT)的简写 作用:对应更新,表明是一个更新URL映射 8、@DeleteMapping @RequestMapping(method = RequestMethod.DELETE)的简写 作用:对应删除,表明是一个删除URL映射

三、Axios 前端发送get请求

<script>
     axios.get('http://localhost:8080/user/hello').then(function (resp){
         console.log(resp);
     }).catch(function (error){
         console.log(error);
     })
</script>

后端响应请求,数据返回给前端

@RestController
@CrossOrigin  //解决跨域问题
@RequestMapping("/user")
public class HelloController {

     private static final Logger LOG = LoggerFactory.getLogger(HelloController.class);

     @GetMapping("/hello")
     public String hello(){
          LOG.info("进入了hello方法");
          return "恭喜您进入了hello方法";
     }
}

响应结果如下

四、Axios 前端发送post请求

<script>
    axios.post('http://localhost:8080/user/user1',{
        id:'001',
        name:'恕瑞玛'
    }).then(function (response){
        console.log(response);
    }).catch(function (error){
        console.log(error);
    })
</script>

后端代码

@RestController
@CrossOrigin  //解决跨域问题
@RequestMapping("/user")
public class HelloController {

     private static final Logger LOG = LoggerFactory.getLogger(HelloController.class);
     @PostMapping("/user1")
     public String user1(@RequestBody User user){
          LOG.info("进入了user1方法");
          LOG.info("id:{} name:{}",user.getId(),user.getName());
          return "恭喜您进入了user1方法";
     }
}

响应结果在后端控制台显示

五、Axios拦截器

1.创建实例封装BaseURL

 //axios创建实例
    const myAxios = axios.create({
        baseURL:'http://localhost:8080',
        timeout:1000,
    })

2.axios 请求拦截器

axios请求拦截器主要是发送请求之前要处理的事情

   //axios创建实例
    const myAxios = axios.create({
        baseURL:'http://localhost:8080',
        timeout:1000,
    })

    //添加请求拦截器
    myAxios.interceptors.request.use(function (config){
        //在发送之前做些什么
        config.url += "?token=1234";
        return config
    });

浏览器效果如下

可以看到,在发送请求之前,预处理添加了token令牌,这就是响应拦截器的作用

3.axios 响应拦截器

前端添加响应拦截器

//axios创建实例
    const myAxios = axios.create({
        baseURL:'http://localhost:8080',
        timeout:1000,
    })
//添加响应拦截器
    myAxios.interceptors.response.use(function (response){
        //对响应数据做点什么
        alert('恭喜你,你的项目被攻击了');
        console.log('进入了响应拦截器',response);
        return response;
    })

浏览器效果如下

可以看到,后端发出的get请求,到前端,前端响应前拦截器拦截,并处理。

总结

请求拦截器是

六、Axios 指路

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

axios安装

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1055497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Vue3】兄弟组件传参

1. 借助父组件传参 A 组件派发一个事件&#xff0c;修改 flag 的值&#xff0c;先传递给父组件&#xff0c;然后由父组件传递给 B 组件。 缺点&#xff1a;必须由 App.vue 处理中间逻辑。 A.vue <template><div class"A"><h1>A组件</h1>…

Tomcat8 任意写文件PUT方法 (CVE-2017-12615)

Tomcat 任意写文件PUT方法 (CVE-2017-12615) 文章目录 Tomcat 任意写文件PUT方法 (CVE-2017-12615)1 在线漏洞解读:2 版本影响3 环境搭建4 漏洞复现4.1 访问4.2 POC攻击点4.2.1 直接发送以下数据包&#xff0c;然后shell将被写入Web根目录。4.2.2 访问是否通&#xff0c;可以访…

零基础Linux_10(进程)进程终止(main函数的返回值)+进程等待

目录 1. 进程终止 1.1 main函数的返回值 1.2 进程退出码和错误码 1.3 进程终止的常见方法 2. 进程等待 2.1 进程等待的原因 2.2 wait 函数 2.3 waitpid 函数 2.4 int* status参数 2.5 int options非阻塞等待 本篇完。 1. 进程终止 进程终止指的就是程序执行结束了&…

Linux命令之查看用户登录信息命令

一、命令简介 linux系统查看用户登录信息的命令有很多&#xff0c;包括w、who、whoami、users、last、lastb、lastlog、id、finger等。每个命令都可以查看当前登录的用户&#xff0c;但是又各有侧重点。w还可以查看用户正在执行的命令&#xff1b;who可以查看系统的启动时间&am…

Linux学习[21]账号与群组1---linux中/etc/passwd与/etc/shadow字段说明

文章目录 前言1. passwd字段说明2. shadow字段说明总结 前言 修改树莓派某个用户的权限到管理员权限的时候&#xff0c;涉及到了对/etc/passwd文件的修改&#xff0c;其中的字段具体含义当时也是模棱两可的&#xff0c;最近看了看相关书籍之后&#xff0c;这里做一个说明。 同…

AIGC Midjourney 机器人绘画案例演示

输入提示词后,点击生成图片即可。 根据描述生成了高清图像。 AIGC ChatGPT 职场案例60集, Power BI 商业智能 68集, 数据库Mysql8.0 54集 数据库Oracle21C 142集, Office, Python ,ETL Excel 2021 实操,函数,图表,大屏可视化 案例实战 http://t.csdn.cn/zBytu<

39 对称二叉树

对称二叉树 理解题意&#xff1a;如果同时满足下面的条件&#xff0c;两个树互为镜像&#xff1a;题解1 【栈】递归——DFS题解2 【队列】迭代——BFS 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 提示&#xff1a; 树中节点数目在范围 [1, 1000] 内-100 &l…

Acwing 240. 食物链

Acwing 240. 食物链 题目描述思路讲解代码展示 题目描述 思路讲解 代码展示 #include <iostream>using namespace std;const int N 50010;int n, m; int p[N], d[N]; //p[]是并查集的father,d[]是距离int find(int x) {if (p[x] ! x) { //如果说x不是树根的话int t f…

【VIM】VIM配合使用的工具

6-1 课程总结-vim虐我千百遍&#xff0c;我待 vim 如初恋_哔哩哔哩_bilibili

吐槽挡不住iPhone15的热销,这就是苹果的实力,库克笑开怀

从某电商平台可以看到苹果的iPhone15Pro max的评论已高达200万条&#xff0c;对比之下竞争对手的某款手机评论仅仅只有200条&#xff0c;可以看出虽然一些人士指出该款手机狙击了iPhone15&#xff0c;而iPhone15在销售方面并未受到影响。 iPhone15在发布前后引发了诸多风波&…

lv5 嵌入式开发-9 信号机制(上)

目录 1 信号机制 2 信号的产生 3 常用信号 4 相关命令 4.1 信号相关命令 kill / killall 4.2 信号发送 – kill / raise 4.3 定时器函数相关函数 – alarm /ualarm/ pause 4.4 信号捕捉&#xff1a;设置信号响应方式 – signal /sigaction&#xff0c;闹钟实现 4.5 子…

面试官让手撕红黑树,我直接向他秀一手手撕map与set

文章目录 一、map与set的STL源码分析二、改造红黑树1.基本结构2.比较 三、迭代器1.STL源码分析2. 迭代器3. 与库里面的迭代器的差异 四、map的[]操作五、map与set完整代码 一、map与set的STL源码分析 我们首先可以观察到&#xff0c;在set和map中包含有如下的头文件 于是我们可…

28299-2012 结构用热轧翼板钢 课堂随笔

声明 本文是学习GB-T 28299-2012 结构用热轧翼板钢. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了结构用热轧翼板钢的订货内容、尺寸、外形、重量及允许偏差、技术要求、试验方法、检 验规则、包装、标志和质量证明书等。 本…

Python绘图系统24:添加辅助坐标轴

文章目录 辅助坐标增减坐标轴时间轴**代码优化源代码 Python绘图系统&#xff1a; 前置源码&#xff1a; Python打造动态绘图系统&#x1f4c8;一 三维绘图系统 &#x1f4c8;二 多图绘制系统&#x1f4c8;三 坐 标 轴 定 制&#x1f4c8;四 定制绘图风格 &#x1f4c8;五 数据…

面试必考精华版Leetcode199. 二叉树的右视图

题目&#xff1a; 代码&#xff08;首刷看解析&#xff09;&#xff1a; class Solution { public:vector<int> rightSideView(TreeNode* root) {unordered_map<int,int> rightmostvalue;queue<TreeNode*> nodeQueue;queue<int> depthQueue;int maxDe…

上古神器:十六位应用程序 Debug 的基本使用

文章目录 参考环境上古神器 DebugBug 与 DebuggingDebugDebug 应用程序淘汰原因使用限制 DOSBox学习 Debug 的必要性DOSBox-X Debug 的基本使用命令 R查看寄存器的状态修改寄存器的内容 命令 D显示内存中的数据指定起始内存空间地址指定内存空间的范围 命令 A使用命令语法错误查…

第8章 Spring(二)

8.11 Spring 中哪些情况下,不能解决循环依赖问题 难度:★★ 重点:★★ 白话解析 有一下几种情况,循环依赖是不能解决的: 1、原型模式下的循环依赖没办法解决; 假设Girl中依赖了Boy,Boy中依赖了Girl;在实例化Girl的时候要注入Boy,此时没有Boy,因为是原型模式,每次都…

量化交易全流程(四)

本节目录 数据准备&#xff08;数据源与数据库&#xff09; CTA策略 数据源&#xff1a; 在进行量化分析的时候&#xff0c;最基础的工作是数据准备&#xff0c;即收集数据、清理数据、建立数据库。下面先讨论收集数据的来源&#xff0c;数据来源可分为两大类&#xff1a;免…

最新宽字节注入攻击和代码分析技术

点击星标&#xff0c;即时接收最新推文 本文选自《web安全攻防渗透测试实战指南&#xff08;第2版&#xff09;》 点击图片五折购书 宽字节注入攻击 宽字节注入攻击的测试地址在本书第2章。 访问id1&#xff0c;页面的返回结果如图4-51所示&#xff0c;程序并没有报错&#xff…