首页 > 其他分享 >22 axios和axios拦截器

22 axios和axios拦截器

时间:2023-10-12 20:23:24浏览次数:32  
标签:function 拦截器 console log 22 axios data

1. axios

由于jquery有严重的地狱回调逻辑. 再加上jquery的性能逐年跟不上市场节奏. 很多前端工程师采用axios来发送ajax. 相比jquery. axios更加灵活. 且容易使用. 更加美丽的是. 这玩意是用promise搞的. 所以更加贴合大前端的项目需求. 来吧. 上手试试吧

<script src="/static/axios.min.js"></script>
<script>
    window.onload = function(){
        axios.post("/movies", {"page": 10086}).then(function(resp){
            console.log(resp.data);
        })
    }
</script>

看到没. 这玩意比jquery简单n多倍. 而且, axios为了更加适应大前端. 它默认发送和接收的数据就是json. 所以, 我们在浏览器抓包时.

image-20220609175541058

直接就是request payload. 这对于前端工程师而言. 爽爆了.

2. axios拦截器

在前端, 我们能看到有些网站会对每次请求都添加加密信息. 或者每次返回数据的时候, 都有解密逻辑. 那此时. 你思考. 不可能每次请求都要程序员去手动写加密逻辑. 例如:

window.onload = function(){
    // 加密数据
    axios.post("/movies", {"page": 10086}).then(function(resp){
        明文 = 解密(resp.data);
        console.log(明文);
    })

    // 加密数据
    axios.post("/movies", {"page": 10086}).then(function(resp){
        明文 = 解密(resp.data);
        console.log(明文);
    })
}

这样很麻烦. 也很蛋疼. axios想到过类似的问题. 它提供了拦截器. 一次性处理好这种问题

axios.interceptors.request.use(function(config){  // 拦截所有请求
    console.log("我是拦截器. 我可以对数据进行加密");
    console.log(config)
    return config;
}, function(error){
    return Promise.reject(error);
});  

axios.interceptors.response.use(function(response){  // 拦截所有响应
    console.log("我是响应回来之后拦截器. 我可以对数据进行解密")
    return response.data;  
}, function(error){
    return Promise.reject(error);
});

这样. 对于业务层的代码而言就简单很多了

window.onload = function(){
    // 加密的逻辑拦截器帮我完成了
    axios.post("/movies", {"page": 10086}).then(function(data){
        // 解密的逻辑拦截器帮我完成了
        console.log(data);
    })
    // 加密的逻辑拦截器帮我完成了
    axios.post("/movies", {"page": 10086}).then(function(data){
        // 解密的逻辑拦截器帮我完成了
        console.log(data);
    })
}

标签:function,拦截器,console,log,22,axios,data
From: https://www.cnblogs.com/zczhaod/p/17760457.html

相关文章

  • 题解 AtCoder wtf22_day1_b【Non-Overlapping Swaps】
    题解AtCoderwtf22_day1_b【Non-OverlappingSwaps】problem给定一个排列,要求交换最多\(n-1\)对元素,使得这个排列变成[1,2,...,n]的有序排列。当然没有那么简单,对于交换还是有限制的,对于相邻的两次交换,不妨叫做\((l_i,r_i)\)和\((l_{i+1},r_{i+1})\),必须满足这两个交......
  • Visual Studio 2022 如何在创建文件时生成默认代码以及注释文件操作
    在创建文件时生成默认代码对于已经有一定的c++编程基础的“学生”来说,次次写默认的代码有时候是挺浪费时间的,对于VisualStudio2022这个版本创建文件时生成默认代码的资源不多,今天先记录一下我们在下载visualstudio时需要下载Community、Packages、Shared这三个文件。我们需......
  • PE盘安装Windows Server 2022系统
    前言我需要一台稳定且能够全天候运行的机器时,电脑原本预装的Windows10系统,虽然在日常使用场景下表现良好,但大家都知道Windows系统的自动更新太频繁了,而且无法关闭。为了解决这个问题,我决定重新安装WindowsServer系统。这里我选择了WindowsServer2022版本。WindowsSer......
  • Z2219. [ABC235E] MST + 1
      先写一发LCA#include<bits/stdc++.h>usingnamespacestd;intn,q,x,y,dep[500005],jump[500005][22];vector<int>d[500005];voidfindep(intp,intf,intdp){ dep[p]=dp;//点p的深度为dp for(inti=0;i<=int(d[p].size()-1);i++) if(d[p][i]!=f) ......
  • Vmware虚拟机桥接到无线网卡,Ubuntu22.04中无法显示IPv4地址,IPv6地址可以获取,但无法上
    环境Win11电脑,Vmware17.01,Ubuntu22.04虚拟机,Windowsserver2003虚拟机问题:在使用桥接模式时,选桥接到无线网卡,Ubuntu22.04/WindowsServer2003虚拟机中无法获取IPv4地址,IPv6地址可以获取,但无法上网。解决办法:网上查了查了下,挺多人遇到这个问题,解决办法1)把桥接设置的自动,改......
  • C++黑马程序员——P223-226. set容器 构造和赋值,大小和交换,插入和删除,查找和统计
    P223.set容器——构造和赋值P224.set容器——大小和交换P225.set容器——插入和删除P226.set容器——查找和统计P223.set容器构造和赋值特点:所有元素都会在插入时自动被排序本质:set/multiset属于关联式容器,底层结构是用二叉树实现。set和multiset的区别set不......
  • AXIOS测试
    AXIOS  1.注册测试1<!DOCTYPEhtml>2<htmllang="en">3<head>4<metacharset="UTF-8">5<metaname="viewport"content="width=device-width,initial-scale=1.0">6&l......
  • echarts案例大全,echarts的Demo网站有哪些? 于2022年7月23日由城南蝈蝈发布
    原文链接:https://www.longkui.site/program/frontend/echartsdemo/4831/ 很多开发人员用到echarts做大屏展示,一般常用的网站是 ApacheEcharts,但是这个一个网站的demo不一定满足我们,那么除了ApacheEcharts还有哪些我们可以用的echarts网站呢?1.分享你我网站:分享你我–ECh......
  • DPDK-22.11.2 [四] Virtio_user as Exception Path
    因为dpdk是把网卡操作全部拿到用户层,与原生系统驱动不再兼容,所以被dpdk接管的网卡从系统层面(ipa/ifconfig)无法看到,同样数据也不再经过系统内核。如果想把数据再发送到系统,就要用到virtiouser。这种把数据从dpdk再发送到内核的步骤,就叫做exceptionpath。有关virtiouser,又有一......
  • 在Ubuntu22.04上安装MySQL-Server,并配置可视化界面SQL-Workbench
    在Ubuntu22.04上安装MySQL-Server,并配置可视化界面MySQL-Workbench彻底删除MySQL若您是首次,在Ubuntu22.04上崭新安装mysql,可以略过该步。首先卸载mysql-common:sudoapt-getremovemysql-common然后卸载已经安装的mysql-server:sudoapt-getautoremove--purgemysql-ser......