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))
目录
相关文章
|
6月前
|
XML JSON 前端开发
Axios的特点
Axios的特点
32 0
|
7天前
|
JSON 前端开发 JavaScript
axios的详细使用
axios的详细使用
38 1
|
1月前
|
JSON 前端开发 API
axios使用
axios使用
|
2月前
|
JSON 前端开发 JavaScript
Axios
Axios
55 6
|
4月前
|
存储 设计模式 JSON
快速理解 Axios
快速理解 Axios
46 0
|
5月前
|
前端开发 JavaScript
Axios有哪些常用的方法?
Axios有哪些常用的方法?
34 0
|
7月前
axios详解
axios详解
50 0
|
8月前
|
JSON JavaScript 前端开发
axios的简单的使用
axios的简单的使用
37 0
|
9月前
axios
文章目录 引入 post请求 get请求 实例
35 0
|
9月前
axios学习
axios学习