axios拦截器使用和知识点补充

news2025/1/18 6:53:52

axios拦截器使用和知识点补充

  • axios拦截器使用
    • axios基地址
  • ajax知识点补充
    • onreadstatechange事件
    • Ajax组成部分了解
    • get请求与post请求区别
    • 其他请求方法了解

axios拦截器使用

在这里插入图片描述

    <link rel="stylesheet" href="./lib/bootstrap-v4.6.0.css" />
    <style>
      body {
        padding: 20px;
      }

      .loading-box {
        position: fixed;
        top: 30%;
        left: 50%;
        transform: translateX(-50%);
        background-color: rgba(0, 0, 0, 0.1);
        border-radius: 10px;
        box-shadow: 1px 1px 3px #efefef;
        display: none;
      }
    </style>
  </head>

  <body>
    <!-- 按钮 -->
    <button class="btn btn-primary" id="btn1">请求1</button>
    <button class="btn btn-info" id="btn2">请求2</button>
    <button class="btn btn-warning" id="btn3">请求3</button>

    <!-- loading 区域 -->
    <div class="loading-box">
      <div class="spinner-border m-5 text-primary" role="status">
        <span class="sr-only">Loading...</span>
      </div>
    </div>

    <script src="./lib/axios.js"></script>

    <script>
      /* axios拦截器工作流程
     1. axios 发起请求
     2. 执行 请求拦截器 : 添加ajax发送请求之前的操作
     3. 服务器 接收、处理、响应 请求
     4. 执行 响应拦截器 : 添加服务器响应之后的操作
     4. axios 接收响应(执行then方法)
     */

      // 添加请求拦截器
      axios.interceptors.request.use(
        function(config) {
          // 可以操作这次请求了
          // console.log(config); // ajax请求参数;
          // 展示 loading 效果
          document.querySelector(".loading-box").style.display = "block"
          // 返回固定数据
          return config
        },
        function(error) {
          // 对请求错误做些什么 , 下面这句话,固定语法;
          return Promise.reject(error)
        }
      )

      // 添加响应拦截器
      axios.interceptors.response.use(
        function(response) {
          //服务器响应的数据
          // console.log(response);
          // 隐藏 loading 效果
          document.querySelector(".loading-box").style.display = "none"
          // 把服务器响应的数据返回给axios的then方法
          return response
        },
        function(error) {
          // 隐藏 loading 效果
          $(".loading-box").hide() // 失败了,也要隐藏 loadding 效果;
          // 对响应错误做点什么
          return Promise.reject(error)
        }
      )

      //按钮1
      document.querySelector("#btn1").onclick = function() {
        axios({
          url: "http://www.liulongbin.top:3009/api/news",
          method: "get"
        }).then(res => {
          //成功回调
          console.log(res)
        })
      }

      //按钮2
      document.querySelector("#btn2").onclick = function() {
        axios({
          url: "https://autumnfish.cn/fruitApi/fruits",
          method: "get"
        }).then(res => {
          //成功回调
          console.log(res)
        })
      }
      //按钮3
      document.querySelector("#btn3").onclick = function() {
        axios({
          url: "http://www.liulongbin.top:3009/api/login",
          method: "post",
          data:{ username:'admin',password:'123456'}
        }).then(res => {
          //成功回调
          console.log(res)
        })
      }
    </script>
  </body>
</html>

axios基地址


      //设置axios基地址 : 所有的请求 默认添加前面的 http://域名
      axios.defaults.baseURL = 'http://www.liulongbin.top:3006'

ajax知识点补充

onreadstatechange事件

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
    <script>
        /* XMLHttpRequest的两个事件

        1. onload事件 :  接收服务器响应的数(一次请求,只会执行一次)
        2. onreadystatechang事件 : 作用与onload事件一致(一次请求,会执行多次)
             XMLHttpRequest对象的状态码 (xhr.readyState)
                0: 请求未建立  (创建了xhr对象,但是还没调用open)
                1: 服务器连接已建立 
                2. 请求已接收  (send之后,服务器已经接收了请求)
                3. 请求处理中 
                4. 请求已完成,且响应已就绪 ( 4状态码等同于onload事件 )
        
      //(1).实例化ajax对象
      let xhr = new XMLHttpRequest()
      console.log(xhr.readyState)
      //(2).设置请求方法和地址
      xhr.open("post", "http://www.liulongbin.top:3009/api/login")
      //(3).设置请求头(post请求才需要设置)
      xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
      console.log(xhr.readyState)
      //(4).发送请求 : 参数格式  'key=value'
      xhr.send("username=admin&password=123456")
      //(5).注册回调函数
      //a. onload 是新式浏览器才支持的
      //b. 如果要兼容更早的浏览器,可以使用 onreadystatechange
      //c. onreadystatechange触发时机 : xhr.readState状态变化
      // xhr.onload = function() {};

      xhr.onreadystatechange = function() {
        console.log(xhr.readyState)
        //onreadystatechange会触发多次,一般需要判断xhr.readState == 4 才获取响应数据
        if (xhr.readyState == 4) {
          console.log(xhr.responseText)
        }
      }
    </script>
  </body>
</html>

Ajax组成部分了解

  • Ajax全称 Asynchronous Javascript And XML(异步的js与xml)
    • 说人话: 用js发送异步的网络请求
    • A : Asynchronous 异步
      • 同步 : 指的是代码按照从上往下顺序执行
      • 异步 : 代码不会立即执行,而是要等一会儿执行
        • 目前我们学过的ECMAScript只有两个语法是异步的: 定时器 与 ajax
        • DOM事件也是属于异步的,但是这个是属于DOM的执行机制。所以一般在讨论js同步和异步的时候,主要以js为主,DOM一般不讨论。
    • J:Javascript
    • A :And
    • X : XML 与 XMLHttpRequest
      • XML : 解决跨平台数据传输。
        • 在JSON没有出来以前, 网络传输主要以XML格式数据为主。 后来JSON问世,逐渐取代XML。 但是由于ajax技术出来的比json早,因此xml这个称呼一直保留至今

get请求与post请求区别

  • 1.传参方式不同
    • get在url后面拼接(请求行)
    • post在请求体传参
  • 2.大小限制不同
    • get有大小限制,不同浏览器大小限制不同。 一般2-5 KB
    • post没有大小限制
  • 3.安全性不同
    • get参数直接暴露在url,不安全(一般查询类数据都是get)
    • post参数在请求体中,更加安全(一般登录注册必须是post)
  • 4.传输速度不同
    • get传输速度快
    • post传输速度慢

其他请求方法了解

`实际开发中,前端无权决定请求方法,只需要根据后台接口文档来就可以了

  • put和pacth区别
    • 全局更新 : put
    • 局部更新: patch
请求方式描述特点
post一般用于新增数据(提交数据)请求体传参
get一般用于查询数据(查询数据)请求行(url)传参
delete一般用于删除数据请求体传参
put一般用于更新全部数据请求体传参
patch一般用于更新局部数据请求体传参

在这里插入图片描述

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

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

相关文章

农业机器人研究进展

文章目录一、农业机器人二、国际农业机器人现状三、我国农业机器人发展情况四、农业机器人展望五、结束语2022年9月17-18日&#xff0c;第十一届中国智能产业高峰论坛成功在厦门举办。大会主论坛上&#xff0c;CAAI副理事长、中国工程院院士、国家农业信息化工程技术研究中心研…

Java实现二叉树

一、树 1、树简介 树是一种非线性的数据结构&#xff0c;具有n个结点其数据存储形式像一棵倒挂的树&#xff0c;树有一个根结点没有前驱结点&#xff0c;树有多个叶子结点没有后继结点&#xff0c;树有多个中间结点既有前驱结点又有后继结点。 树结构中子树之间不能有交集。 n个…

【Node.js实战】一文带你开发博客项目之联调(导入HTML、Nginx反向代理、CORS解决跨域、与前端联调)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;秋招&#xff09; &#x1f680;未…

Tapdata Cloud 场景通关系列: Oracle → MySQL 异构实时同步

【前言】作为中国的 “Fivetran/Airbyte”, Tapdata Cloud 自去年发布云版公测以来&#xff0c;吸引了近万名用户的注册使用。应社区用户上生产系统的要求&#xff0c;Tapdata Cloud 3.0 将正式推出商业版服务&#xff0c;提供对生产系统的 SLA 支撑。Tapdata 目前专注在实时数…

二叉树的遍历(非递归)

二叉树的遍历 遍历二叉树, 是指按一定的规则和顺序访问二叉树的所有结点, 使每一个结点都被访问一次, 而且只被访问一次. 由于二叉树是非线性结构, 因此, 二叉树的遍历实质上是将二叉树的各个结点排列成一个线性序列. DFS: 前序, 中序及后序. BFS: 是指沿着二叉树的宽度优先遍…

Leetcode.1806 还原排列的最少操作步数

题目链接 Leetcode.1806 还原排列的最少操作步数 题目描述 给你一个偶数 ​n​n​n​​​​​ &#xff0c;已知存在一个长度为 nnn 的排列 permpermperm &#xff0c;其中 perm[i]iperm[i] iperm[i]i​&#xff08;下标 从 0 开始 计数&#xff09;。 一步操作中&#xff0…

OLAP和OLTP的区别

OLAP和OLTP的区别 OLAP&#xff1a; (Online transaction processing):在线/联机事务处理。典型的OLTP类操作都比较简单&#xff0c;主要是对数据库中的数据进行增删改查&#xff0c;操作主体一般是产品的用户。 OLTP&#xff1a; (Online analytical processing):指联机分…

Vue新一代状态管理工具—Pinia—都2023年了,快学起来吧!

Pinia 基本介绍 Pinia 是 Vue.js 的轻量级状态管理库 官方网站&#xff1a;https://pinia.vuejs.org/ 中文文档: https://pinia.web3doc.top/introduction.html 为什么学习pinia? pinia和vuex4一样&#xff0c;也是vue 官方 状态管理工具(作者是 Vue 核心团队成员&#xff…

基于JAVA SSM框架的影院管理系统源码,实现包括影院管理,电影管理,影厅管理,排片管理,选座售票,演员管理,影片评论等功能

介绍 下载地址&#xff1a;基于JAVA SSM框架的影院管理系统源码 该项目是一个电影信息管理、发布、展示平台&#xff0c;终端用户可以浏览、购票、评论。项目主要实现包括影院管理&#xff0c;电影管理&#xff0c;影厅管理&#xff0c;排片管理&#xff0c;选座售票&#xff…

连号区间数(第四届蓝桥杯省赛C++B组,第四届蓝桥杯省赛JAVAB组)

题目详细&#xff1a;解题思路&#xff1a;对于这个题目如果一开始没有思路的话我们可以先想一下暴力写法暴力的话就是不断的枚举每个区间然后判断这个区间是否合法这样写下来用了三重循环而对于题目我们只能通过部分样例所以我们就要想办法取缩减它的时间对于遍历每个区间我们…

【SpringBoot】使用AOP+注解实现请求参数的指定自动填充

首先定义一个加在方法上的注解 import java.lang.annotation.*;/*** 开启自动参数填充*/ Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD}) Documented Inherited public interface AutoParameterFill {/*** 要填充的字段名,不写的话默认下面类的子类中的字段…

Redis未授权访问漏洞(一)先导篇

前言 Redis默认情况下&#xff0c;会绑定在0.0.0.0:6379&#xff0c;如果没有进行采用相关的策略&#xff0c;比如添加防火墙规则避免其他非信任来源ip访问等&#xff0c;这样将会将Redis服务暴露到公网上。 如果在没有设置密码认证&#xff08;一般为空&#xff09;的情况下…

InceptionNet与ResNet

以下代码图片思路来源&#xff1a; 北京大学Tensor flow笔记 嗯,最近学了一下神经网络&#xff0c;并没有很难&#xff0c;主要是把代码背下来&#xff0c;然后掌握Tensorflow是怎么搭建网络的&#xff0c;Tensorflow是比pytorch好用的&#xff0c;我直接抄的代码里面&#xff…

UDS诊断系列介绍05-27服务

本文框架1. 系列介绍27服务概述2. 27服务请求与应答2.1 27服务请求2.2 27服务肯定应答2.3 27服务否定应答1. 系列介绍 UDS&#xff08;Unified Diagnostic Services&#xff09;协议&#xff0c;即统一的诊断服务&#xff0c;是面向整车所有ECU的一种诊断通信方式&#xff0c;…

java-操作excel

文章目录java操作Excel数据使用场景excel 03 和 07的区别POIeasyExcel解析excel表中的对象POI使用步骤POI 写数据POI 读数据计算公式easyExcel读写数据写数据读数据java操作Excel数据 在 平时 可以使用IO流对Excle进行操作 但是现在使用更加方便的第三方组件来实现 使用场景 1、…

在rhel7系统使用Mariadb

文章目录一 联系和区别二 需求三 部署安装3.1 环境准备3.2 安装软件包3.3 启动服务3.4 设置防火墙策略四 创建用户和库表4.1 登录数据库4.2 创建用户4.3 创建数据库和表五 备份和恢复5.1 备份 com 数据库5.2 模拟误删除操作5.3 恢复表一 联系和区别 Mariadb是由社区开发的一个…

4.4 集成运放的性能指标及低频等效电路

一、集成运放的性能指标 在考察集成运放的性能时&#xff0c;常用下列参数来描述&#xff1a; 1、开环差模增益 AodA_{od}Aod​ 在集成运放无外加反馈时的差模放大倍数称为差模开环增益&#xff0c;记作 AodA_{od}Aod​。AodΔuO/(uP−uN)A_{od}\Delta u_O/(u_P-u_N)Aod​Δ…

【Spring Cloud GateWay】ServerHttpResponseDecorator不生效

文章目录1. BUG描述2. BUG解决3. BUG分析1. BUG描述 在Spring Cloud Gateway使用编码的方式实现一个全局拦截器&#xff0c;在全局拦截器中想要打印响应日志。 于是自己装饰了一个具有打印日志功能的ServerHttpResponseDecorator&#xff0c;但是在转发后的服务返回响应的时候…

在线浏览PDF:Grapecity Documents for PDF Viewer 6.0.2

Grapecity Documents for PDF Viewer跨平台 JavaScript PDF 查看器---备注:必须配合.NET版本才能编辑PDF 使用我们的 JavaScript PDF 查看器在网络上阅读和编辑 PDF。跨浏览器和框架打开和打印。 Grapecity Documents for PDF Viewer全功能的 JavaScript PDF 查看器和 PDF 编辑…

move语言之基础学习(基本类型+表达式+变量)例子

一、基本类型 Move 的基本数据类型包括: 整型 (u8, u64, u128)、布尔型 boolean 和地址 address。 Move 不支持字符串和浮点数。 整型 整型包括 u8、u64 和 u128&#xff0c;我们通过下面的例子来理解整型&#xff1a; script { fun main() { // define empty variable, set…