跳转至

JS 请求库

基本都是异步的

XHR

XMLHttpRequest 提供了在 JavaScript 中发起 HTTP 请求的能力,支持同步和异步通信,但现代应用中几乎总是使用异步模式。

AJAX

Asynchronous JavaScript and XML,一种在无需刷新整个页面的情况下,与服务器异步交换数据并更新部分网页的技术,主要是对 XHR 的封装。

代码通常较为冗长,需要手动处理请求和响应。

// 创建 XMLHttpRequest 对象
let xhr = new XMLHttpRequest();

// 指定请求的方法和 URL
xhr.open("GET", "https://api.github.com/search/users?q=zuoright", true);

// 设置回调函数,处理请求的响应
xhr.onreadystatechange = function () {
    // 请求成功
    if (xhr.readyState == 4 && xhr.status == 200) {
        // 处理响应数据
        console.log(JSON.parse(xhr.responseText));
    }
}

// 发送请求
xhr.send();

jQuery 提供了简化 AJAX 操作的方法,许多现代框架和库(如 React, Angular, Vue.js)也提供了自己的方式来处理 AJAX 请求

$.get("someurl", function(data) {
    console.log(data);
});

Fetch API

是现代浏览器提供的原生 JavaScript API,用于从服务器获取资源。它是 XMLHttpRequest 的现代替代品,提供了更简洁的接口和 Promise 支持。

  • GET
fetch(
    'https://api.github.com/search/users?q=zuoright',
    {
        method: 'GET',
    }
)
.then(response => response.json())  // 处理响应返回Json格式
.then(data => console.log(data))  // 打印返回数据
.catch((error) => console.error('Error:', error));  // 捕获错误
  • POST
fetch(
    'https://api.example.com/data',
    {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
    },
    body: JSON.stringify({username: '0xAA', password: 'pwd',}),
})
.then(response => response.json())
.then(data => console.log(data))
.catch((error) => console.error('Request failure:', error));

Axios

Axios 是一个基于 Promise 的第三方 HTTP 库,可以拦截请求和响应,转换请求和响应数据,取消请求,自动转换 JSON 数据,客户端支持防御 XSRF 等。

许多现代前端框架和库(如 React)都推荐或默认使用 Axios 来处理 HTTP 请求

const axios = require('axios');

axios.get('https://api.github.com/search/users?q=zuoright')
.then(function (response) {
    console.log(response.data);
})
.catch(function (error) {
    console.log(error);
});