速成axios

Axios

大家好,又到了我们学习新东西的时候了,今天我们来了解一下现在市场上最主流的发送ajax请求的插件咯
了解一个插件的第一步肯定是去它的官网逛逛咯
在这里插入图片描述

从它的主页就可以看出axios是基于promise异步,适用于浏览器和node.js

ajax的前世今生

对于我们来说忘什么都不能忘本呐,即便axios再怎么好用也不能把我们js的原生ajax请求给忘了叭,不过忘了也影响不大,刚好来我这复习一下
我之前的博客对原生ajax有过详细的介绍,链接放下面 ,就回到我们的主题吧
原生ajax详细介绍

axios的使用方式

工作流程

从浏览器中创建 XMLHttpRequest
从 node.js 发出 http 请求
支持 Promise API
拦截请求和响应
转换请求和响应数据
取消请求
自动转换JSON数据
客户端支持防止 CSRF/XSRF

引入方式

//直接使用npm下载
npm install axios
//或者使用cdn
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

怎么使用

以vue举例
1.直接将axios 写入vue原型链

//导入axios
import axios from 'axios'
//添加到原型链
Vue.prototype.$http = axios

这样在任何组件都可以使用到axiosle
使用方式 this.$http
2.将axios单独写在一个js文件,接口分别暴露,使用的时候在组件里导入对应的方法

-------------api.js--------------------------------------
import axios from "axios";
const http = axios.create({
	//开始路径
    baseURL:'http://127.0.0.1/api',
    //超时时间
    timeout:16000
})
export const getUserName = function (LoginForm) {
  return https.post("login", LoginForm)
}
export const getMenuList = function () {
  return https.get("menus")
}
-------------------需要调用接口的组件------------
import {getUserName}from "./api.js";

总结
我们一般都会使用后面的那种方式去进行调用接口
原因:接口函数的集中管理便于后期维护,减少不必要的麻烦

axios的常用的api

配置axios实例

import axios from 'axios';
const instance = axios.create({
  baseURL: 'http://127.0.0.1/api',
  timeout: 5000,
  headers: {
    'Content-Type': 'application/json',
  },
});
  • baseURL:设置统一初始路径
  • timeout:设置请求的超时时间
  • headers:设置请求的请求头

axios的请求使用方法
1.使用axios()方法

method:ajax的请求方式
url:请求路径
data:请求发送的数据
headers:自定义请求头

	 axios({
	  method: 'post',
	  url: '/user/12345',
	  // 自定义请求头
  	headers: {'X-Requested-With': 'XMLHttpRequest'},
	  data: {
	    firstName: 'Fred',
	    lastName: 'Flintstone'
	  }
	});

2.请求方式别名

这种方式使用方便,简单
缺点:不可以个性化定制配置

		axios.get(url[, config])
		axios.delete(url[, config])
请求方式请求作用参数传递方式
get从服务器获取数据通过URL传参数
post向服务器推送数据使用请求主体的方式向服务器传递内容
put给服务器上增加资源文件使用请求主体的方式向服务器传递内容
delete从服务器上删除资源文件向服务器传输内容方式与get一致

其实GET和POST的区别挺大的,在传值大小,缓存,安全上都有区别,同学们有时间 可以自行去扩展

发送post请求

举例

axios.post('/user', {
    firstName: 'Fred',
    lastName: 'Flintstone'
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

发送请求可以配合 .then .catch使用,或者使用async/awit解决异步

并发请求

	function getUserAccount() {
	  return axios.get('/user/12345');
	}
	
	function getUserPermissions() {
	  return axios.get('/user/12345/permissions');
	}
	
	const [acct, perm] = await Promise.all([getUserAccount(), getUserPermissions()]);
	
	// OR
	
	Promise.all([getUserAccount(), getUserPermissions()])
	  .then(function ([acct, perm]) {
	    // ...
	  });

利用 romise.all()方法多请求一起发送,全部请求成功后才返回成功

拦截器

添加拦截器

请求拦截器 在请求发送前进行必要操作处理,例如添加统一cookie、请求体加验证、设置请求头等,相当于是对每个接口里相同操作的一个封装;
响应拦截器 同理,响应拦截器也是如此功能,只是在请求得到响应之后,对响应体的一些处理,通常是数据统一处理等,也常来判断登录失效等。

// 添加请求拦截器
	axios.interceptors.request.use(function (config) {
	    // 在发送请求之前做些什么
	    return config;
	  }, function (error) {
	    // 对请求错误做些什么
	    return Promise.reject(error);
	  });
	
	// 添加响应拦截器
	axios.interceptors.response.use(function (response) {
	    // 2xx 范围内的状态码都会触发该函数。
	    // 对响应数据做点什么
	    return response;
	  }, function (error) {
	    // 超出 2xx 范围的状态码都会触发该函数。
	    // 对响应错误做点什么
	    return Promise.reject(error);
	  });

既然可以添加拦截器,那么就能移除拦截器咯

	const myInterceptor = axios.interceptors.request.use(function () {/*...*/});
	axios.interceptors.request.eject(myInterceptor);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ps:预览调整 32 位 HDR 图像

由于 HDR 图像的动态范围超出了标准计算机显示器的显示范围。在 Photoshop 中打开 HDR 图像时&#xff0c;图像可能会非常暗或出现褪色现象。 Photoshop 提供了专门的预览调整功能&#xff0c;以使标准显示器显示的 HDR 图像的高光和阴影不会太暗或出现褪色现象。 预览调整设置…

【VASP学习】在Ubuntu系统安装vasp.5.4.4的全过程(包括VASP官方学习资料、安装过程中相关编辑器的配置、VASP的编译及VASP的测试)

在Ubuntu系统安装vasp.5.4.4的全过程 VASP的简介与相关学习资料安装前的准备工作及说明安装过程intel编译器的安装VASP的编译VASP的测试 参考来源 VASP的简介与相关学习资料 VASP(Vienna Ab initio Simulation Package)是基于第一性原理对原子尺度的材料进行模拟计算的软件。比…

学习 Git 基础知识 - 日常开发任务手册

欢迎来到我关于 Git 的综合指南&#xff0c;Git 是一种分布式版本控制系统&#xff0c;已经在软件开发中彻底改变了协作和代码管理方式。 无论你是经验丰富的开发者还是刚开始编程之旅的新手&#xff0c;理解 Git 对于正确掌控代码、高效管理项目和与他人合作至关重要。 在本…

LeetCode:1026. 节点与其祖先之间的最大差值(DFS Java)

目录 1026. 节点与其祖先之间的最大差值 题目描述&#xff1a; 实现代码与解析&#xff1a; DFS 原理思路&#xff1a; 1026. 节点与其祖先之间的最大差值 题目描述&#xff1a; 给定二叉树的根节点 root&#xff0c;找出存在于 不同 节点 A 和 B 之间的最大值 V&#xff…

2024 年最新使用 Wechaty 开源框架搭建部署微信机器人(微信群智能客服案例)

读取联系人信息 获取当前机器人账号全部联系人信息 bot.on(ready, async () > {console.log("机器人准备完毕&#xff01;&#xff01;&#xff01;")let contactList await bot.Contact.findAll()for (let index 0; index < contactList.length; index) {…

Redis各个方面入门详解

目录 一、Redis介绍 二、分布式缓存常见的技术选型方案 三、Redis 和 Memcached 的区别和共同点 四、缓存数据的处理流程 五、Redis作为缓存的好处 六、Redis 常见数据结构以及使用场景 七、Redis单线程模型 八、Redis 给缓存数据设置过期时间 九、Redis判断数据过期的…

云服务器ECS租用价格表报价——阿里云

阿里云服务器租用价格表2024年最新&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元&#xff0c;ECS u1服务器2核4G5M固定带宽199元一年&#xff0c;2核4G4M带宽轻量服务器一年165元12个月&#xff0c;2核…

Django环境搭建及测试

Django环境搭建及测试 一、安装 Python二、安装 Django三、终端命令创建 Django 项目四、运行 Django 项目五、访问 Django 网站 一、安装 Python 首先确保你的电脑上安装了 Python。 Python官网点击直达 官网下载后双击即可安装 第一个相当于快速安装&#xff0c;第二个则是…

Linux之shell脚本编辑工具awk

华子目录 概念工作流程工作图流程&#xff08;按行处理&#xff09; awk程序执行方式1.通过命令行执行awk程序实例 2.awk命令调用脚本执行实例 3.直接使用awk脚本文件调用实例 awk命令的基本语法格式BEGIN模式与END模式实例awk的输出 记录和域&#xff08;记录表示数据行&#…

了解强化学习算法 PPO

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 介绍&#xff1a; PPO 算法&#xff0c;即 Proximal Policy Optimization&#xff08;近端策略优化&#xff09;&#xff0c;是一种强化学习算法。它的主要目的是改进策略梯度方法&#xff0c;使得训练…

真--个人收款系统方案

此文主要说明方案&#xff0c;无代码部分 前言: 有个个人项目需要接入vip系统&#xff0c;我们发现微信、支付宝的官方API主要服务商户&#xff0c;而市面上的“个人收款系统”也往往不符合我们的需求。不过&#xff0c;每次支付时通知栏的信息给了我灵感。走投无路&#xff0…

Transformer模型-Normalization归一化的简明介绍

背景 一般而言&#xff0c;Normalization归一化是将特征转换为可比较尺度的过程。有许多方法可以对特征进行归一化 例如&#xff1a;最小-最大特征缩放 最小-最大特征缩放将值转换到[0,1]的范围内。这也被称为基于单位的归一化。可以使用以下方程进行计算&#xff1a; 该方程…

Qt+OpenGL-part5

2-1QT UI调用OpenGL控件功能_哔哩哔哩_bilibili 注意析构问题。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>namespace Ui { class MainWindow; }class MainWindow : public QMainWindow {Q_OBJECTpublic:explicit MainWindow(QWidget *parent …

simulink,stm32f103,新建工程实现led闪烁

1. 打开stm32cubeMX&#xff0c;选择单片机型号 2. SYS&#xff0c;选Seral Wire&#xff0c;TIM5 3. GPIO&#xff0c;配置LED驱动管脚为OutPut 3.时钟树选择内部RC&#xff0c;笔者这么做的原因是&#xff0c;在选择外部时钟作为时钟源时候&#xff0c;发现程序总会卡死在Sy…

SQL注入---文件上传+Webshell

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.Web工作原理 Web工作原理详解 HTTP/HTTPS协议会作为浏览器中输入信息的载体&#xff0c;向目标服务器发送请求&#xff0c;目标服务器收到请求后再返回对饮的信息&#xff0c;其中浏览器中…

LangChain-08 Query SQL DB 通过GPT自动查询SQL

我们需要下载一个 LangChain 官方提供的本地小数据库。 安装依赖 SQL: https://raw.githubusercontent.com/lerocha/chinook-database/master/ChinookDatabase/DataSources/Chinook_Sqlite.sql Shell: pip install --upgrade --quiet langchain-core langchain-community la…

MySQL学习记录1(学习笔记)

MySQL学习 一、记录知识点 一、记录知识点 1.默认使用的引擎就是InnoDB。不过&#xff0c;也可以通过指定存储引擎的类型来选择别的引擎&#xff0c;比如在create table语句中使用enginememory, 来指定使用内存引擎创建表。 2.不同的存储引擎共用一个Server层&#xff0c;也就…

第20次修改了可删除可持久保存的前端html备忘录:重新布局

第20次修改了可删除可持久保存的前端html备忘录&#xff1a;重新布局 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"…

苍穹外卖——项目搭建

一、项目介绍以及环境搭建 1.苍穹外卖项目介绍 1.1项目介绍 本项目&#xff08;苍穹外卖&#xff09;是专门为餐饮企业&#xff08;餐厅、饭店&#xff09;定制的一款软件产品&#xff0c;包括 系统管理后台 和 小程序端应用 两部分。其中系统管理后台主要提供给餐饮企业内部员…

4 万字全面掌握数据库、数据仓库、数据集市、数据湖、数据中台

如今&#xff0c;随着诸如互联网以及物联网等技术的不断发展&#xff0c;越来越多的数据被生产出来-据统计&#xff0c;每天大约有超过2.5亿亿字节的各种各样数据产生。这些数据需要被存储起来并且能够被方便的分析和利用。 随着大数据技术的不断更新和迭代&#xff0c;数据管…