axios

简介: axios

产生环境

在上古时期,浏览器页面在向服务器请求数据时,因为返回的是整个页面的数据,页面都会强制刷新一下,这对当时的用户来说体验非常的糟糕,也限制了浏览器中应用的很多可能性。


基于这个背景,异步网络请求应运而生—— AjaxAsynchronous JavaScript and XML


Ajax 能够让页面无刷新的请求数据。


注意

此处的 Ajax 是一个概念。常说的 Ajax 一般指的是 jQuery 中的 Ajax 实现。

因为 Ajax 是一个概念,所以也就会相应的有其具体实现,如常见的: jQuery 封装的 ajax 、原生的 XMLHttpRequestaxios 等。各种方式各有利弊。


  • 原生的XMLHttpRequest的配置和调用方式都很繁琐,实现异步请求十分麻烦。
  • jQueryajax相对于原生的ajax是非常好用的,但是没有必要因为要用ajax异步网络请求而引用jQuery框架,当然,老项目以jQuery为框架的前端当然没有这个弊端了。


原生 XMLHttpRequest 实现 Ajax 请求代码:

var request = new XMLHttpRequest(); // 创建XMLHttpRequest对象
//ajax是异步的,设置回调函数
request.onreadystatechange = function() { // 状态发生变化时,函数被回调
    if (request.readyState === 4) { // 成功完成
        // 判断响应状态码
        if (request.status === 200) {
            // 成功,通过responseText拿到响应的文本:
            return success(request.responseText);
        } else {
            // 失败,根据响应码判断失败原因:
            return fail(request.status);
        }
    } else {
        // HTTP请求还在继续...
    }
}
// 发送请求:
request.open('GET', '/api/categories');
request.setRequestHeader("Content-Type", "application/json") //设置请求头
request.send(); //到这一步,请求才正式发出点击复制复制失败已复制


介绍

axios 可以理解为 ajax i/o system这不是一种新技术,本质上还是对原生 XMLHttpRequest 的封装,可用于浏览器nodejsHTTP 客户端,只不过它是基于 Promise 的,符合最新的 ES 规范。具备以下特点:

  1. 在浏览器中创建XMLHttpRequest请求
  2. node.js中发送http请求
  3. 支持Promise API
  4. 拦截请求和响应
  5. 转换请求和响应数据
  6. 取消要求
  7. 自动转换JSON数据
  8. 客户端支持防止CSRF/XSRF(跨域请求伪造)


请求方式

axios 是基于 Promise 的,因此可以使用 Promise API

  1. axios(config)
  2. axios.request(config)
  3. axios.get(url [,config])
  4. axios.post(url [,data [,config]])
  5. axios.put(url [,data [,config]])
  6. axios.delete(url [,config])
  7. axios.patch(url [,data [,config]])
  8. axios.head(url [,config])


示例:

//执行GET请求
import axios from 'axios'
axios.default.baseURL = 'http://localhost:3000/api/products'
axios.get('/user?ID=12345') //返回的是一个Promise
    .then(res => console.log(res))
    .catch(err => console.log(err));
//可配置参数的方式
axios.get('/user', {
        params: {
            ID: 12345
        }
    }).then(res => console.log(res))
    .catch(err => console.log(err));
//发送post请求
axios.post('/user', {
        firstName: 'simon',
        lastName: 'li'
    }).then(res => console.log(res))
    .catch(err => console.log(err));
//发送多个请求(并发请求),类似于promise.all,若一个请求出错,那就会停止请求
const get1 = axios.get('/user/12345');
const get2 = axios.get('/user/12345/permission');
axios.all([get1, get2])
    .then(axios.spread((res1, res2) => {
        console.log(res1, res2);
    }))
    .catch(err => console.log(err))
目录
相关文章
|
Java Nacos 微服务
Nacos配置管理 02
Nacos除了可以做注册中心,同样可以做配置管理来使用。
|
JSON 数据格式 Python
Django返回json数据
Django返回json数据
1436 0
|
C#
【WPF】代码触发Button点击事件
原文:【WPF】代码触发Button点击事件 先定义Button按钮并绑定事件。 public void test() { Button btn = new Button(); btn.
2654 0
|
移动开发 前端开发 数据安全/隐私保护
React Native AES加密
1). 加密库--aes-js 2). 创建加密工具类 // 获取Aes加密 // npm i aes-js let aes = require('aes-js'); // 默认KEY - An example 128-bit key let _k...
2500 0
|
Web App开发 JavaScript 索引
网页中嵌入百度影音播放器的代码
@{     //假如传入1,播放 http://localhost:5578/Upload/[电影天堂心战HD中字.mkv     //传入2,播放 http://localhost:5578/Upload/狄仁杰之神都龙王_hd.mp4     //传入3,播放 http://localhost:5578/Upload/人再囧途之泰囧_DVD清晰中字.rmvb        //1的下一集是2,2的下一集是3。
1371 0
|
8天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
7天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
353 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话