5种最流行的发送HTTP请求的方法

浏览器发送HTTP请求的过程 浏览器发送HTTP请求的过程是一个复杂但有序的步骤,‌主要包括以下几个阶段:‌1.构建请求,2.查找缓存、3.DNS解析、4.建立TCP连接、5.发送HTTP请求、6.服务器处理请求、7.服务器发送响应、8.客户端处理响应、9.关闭连接。 阅读详情

在这里插入图片描述
现代Javascript提供了许多向远程服务器发送HTTP请求的方法。从原生XMLHttpRequest对象到Axios等第三方库,拥有如此丰富的选择集合使得在web应用程序中请求和动态加载内容比以往任何时候都更加轻松。

所以,在今天的帖子中,我们将讨论用Javascript发送HTTP请求的不同方法。从语言提供的本地选项开始,我们将查看以下五个模块,并使用它们发送不同类型的HTTP请求。

  • XMLHttpRequest

  • Fetch

  • Axios

  • SuperAgent

  • Ky

XMLHttpRequest

XMLHttpRequest是一种Javascript原生API,它封装了发送HTTP请求的逻辑,而无需刷新已加载的网页(AJAX请求)。尽管开发人员现在很少直接使用XMLHttpRequest,但它仍然是在许多流行的HTTP请求模块下工作的构建块。

因此,了解如何使用XMLHttpRequest方法发送请求可以帮助您处理第三方库不支持的惟一用例。

下面是如何发送GET请求和使用XMLHttpRequest API从远程API异步检索数据:

//create XMLHttpRequest object
const xhr = new XMLHttpRequest()
//open a get request with the remote server URL
xhr.open("GET", "https://world.openfoodfacts.org/category/pastas/1.json")
//send the Http request
xhr.send()

//EVENT HANDLERS

//triggered when the response is completed
xhr.onload = function() {
  if (xhr.status === 200) {
    //parse JSON datax`x
    data = JSON.parse(xhr.responseText)
    console.log(data.count)
    console.log(data.products)
  } else if (xhr.status === 404) {
    console.log("No records found")
  }
}

//triggered when a network-level error occurs with the request
xhr.onerror = function() {
  console.log("Network error occurred")
}

//triggered periodically as the client receives data
//used to monitor the progress of the request
xhr.onprogress = function(e) {
  if (e.lengthComputable) {
    console.log(`${e.loaded} B of ${e.total} B loaded!`)
  } else {
    console.log(`${e.loaded} B loaded!`)
  }
}

正如这个示例所示,使用XMLHttpRequest发送GET请求的过程包括三个步骤:

  1. Create XMLHttpRequest

  2. Opening the HTTP request of the indented type

  3. Sending the request

一旦请求被发送,我们就可以使用XMLHttpObject提供的事件处理程序来处理它的响应。在这里,我们使用了两个事件处理程序:onload、onerror和onprogress。这里需要注意的是,onerror方法只处理与请求相关的网络级错误。为了识别HTTP错误,我们必须检查onload方法中的HTTP状态代码。

我们可以按照类似的模式使用XMLHttpRequest发送POST请求。

// create XMLHttpRequest object
const xhr = new XMLHttpRequest()
// open a POST request
xhr.open("POST", "/food")
// set content-type header to JSON
xhr.setRequestHeader("Content-Type", "application/json");
// send JSON data to the remote server
xhr.send(JSON.stringify(food))

// Event Handlers

// track data upload progress
xhr.upload.onprogress = function(e) {
  console.log(`${e.loaded}B of ${e.total}B uploaded!`)
}

// triggered when data upload is finished
xhr.upload.onload = function(e) {
  console.log("Upload completed")
}

// triggered when the response is fully received
xhr.onload = function() {
  console.log(xhr.status)
}

// triggered due to a network-level error
xhr.onerror = function() {
  console.log("Network error occurred")
}

早期的GET和当前的POST请求之间的一个主要区别是在发布JSON数据时显式设置内容类型头。此外,与GET请求相比,POST请求还可以触发另一种事件类型。它们是通过xhr访问的上传事件。上传字段。当请求体必须携带大量数据(如图像、文件等)时,这些事件处理程序帮助我们跟踪数据上传进度。

SpringBoot实战(二十九)发送HTTP/HTTPS请求的五种实现方式【上篇】(HttpURLConnection、HttpClient) 阅读详情

相关推荐

.NET(C#)后台发送Get和Post请求的几种方法总结

NET (C#) 中,发送 HTTP GET 和 POST 请求可以通过多种方式实现,主要依赖于 .NET Framework 或 .NET Core/5+ 的版本。.NET中提供了多种方法来发送HTTP请求,每种方法都有其优缺点。选择哪种方法取决于具体需求和环境。

weixin_42098295的博客 2633

实现发送Http请求的两种方法

最近开发微信公众号平台时,需要使用到HTTP请求发送的方法,所以撸了两种出来,属于工具类的范畴,也可以直接使用RestTemplate,简单粗暴,上手极快 使用原生HttpURLConnection public class HttpClientTest { /** * Get请求 * @param httpUrl * @return *...

1万+

海康视觉平台VisionMaster通讯实战:三种触发方式深度解析

本文深度解析海康视觉平台VisionMaster的三种通讯触发方式:字符串触发、接收字符串事件触发和轮询D地址触发。通过实际案例和配置技巧,帮助工程师在工业场景中实现高效、稳定的设备通讯,提升视觉系统的集成效率和可靠性。

weixin_42665255的博客 279

如何发起一次完整的HTTP的请求流程

HTTP 是一种允许浏览器向服务器获取资源的协议,是 Web 的基础,通常由浏览器发起请求,用来获取不同类型的文件, 例如 HTML 文件、CSS 文件、JavaScript 文件、图片、视频等。此外,HTTP 也是浏览器使用最广的协议。

青春木鱼的博客 4058

【OpenVINO】OpenVINO C# API 常用 API 详解与演示

在本文中我们基于模型推理流程,演示了OpenVINO C# API使用方法,并和OpenVINO C++API进行了对比,展示了OpenVINO C# API与C++API在使用的区别,这也对使用过C++ API的开发者十分友好,上手会十分容易。在本文中我们只展示了基础的模型推理流程代码,也对各个API进行了测试,针对其他比较高级的API方法,我们后续会继续进行测试其他API方法,向各位开发者展示其用法。

grape_yan的博客 1539

AM243x多核MCU启动流程解析与OSPI Flash烧录实战

嵌入式系统开发中,引导加载器是芯片上电后执行的第一段软件,负责初始化硬件、加载操作系统或应用程序。其工作原理通常遵循多级引导链,从ROM固件到用户可定制的二级引导程序,逐级建立完整的软件运行环境。这一机制的技术价值在于实现可靠的系统启动、支持安全校验,并为多核异构架构提供协同基础。在应用场景上,引导加载器广泛应用于工业控制、汽车电子和物联网设备,确保设备能从非易失性存储器中自主启动。本文聚焦于TI AM243x这类高性能多核MCU,深入剖析其包含RBL和SBL在内的三级启动流程,并详细演示如何通过UART接

weixin_28703451的博客 582

发送HTTP请求

HTTP请求是一种客户端向服务器发送请求的协议。它是基于TCP/IP协议的应用层协议,用于在Web浏览器和Web服务器之间传输数据。HTTP请求由以下几个部分组成:请求行:包含请求方法、请求的URL和HTTP协议的版本。常见的请求方法有GET、POST、PUT、DELETE等。请求头:包含一些附加的信息,如用户代理、请求的内容类型、请求的语言等。请求体:可选的,用于传输请求的数据,如表单数据、JS...

相信相信的力量 421

全新YOLO26有效涨点改进专栏目录 | 本专栏持续更新500+篇内容 | 包含各种卷积、主干网络、各种注意力机制、检测头、损失函数、小目标检测改进、二次创新模块、独家创新等几百种创新点改进

🔥《2026年YOLO26改进专栏》🔥 🚀持续更新500+最前沿创新改进点(顶会顶刊论文/独家创新策略),涵盖主干网络、各种卷积、注意力机制、检测头等模块,助力科研论文发表与模型性能提升,支持检测/分割/分类任务。订阅即获完整可运行项目,提供专业QQ答疑群,适合科研发论文(SCI/CCF/核心)及工业应用(PCB/医学/遥感检测)。专栏价格将逐步上涨,早订更优惠! ⭐特色:非计算机专业友好、模块可自由组合、全网独家创新;📌适用:研究生大论文和小论文创新、小目标检测、多领域科研应用,满足不同研究需求。

Ai缝合怪、助力小伙伴高效发论文 5097

javascript 请求_这是用JavaScript发出HTTP请求的最流行的方法

javascript 请求JavaScript has great modules and methods to make HTTP requests that can be used to send or receive data from a server side resource. In this article, we are going to look at a few popular...

cumian8165的博客 1413

38.XDMA寄存器详解2-H2C、C2H通道寄存器组剖析

目录 1.上节回顾 2. H2C寄存器剖析 2.1 H2C通道标识寄存器(0x00) 2.2 H2C通道控制寄存器(0x04) 2.3 H2C通道状态寄存器(0x40) 2.4 H2C通道完成描述符数量寄存器(0x48) 2.5 H2C通道对齐寄存器(0x4C) 2.6 H2C通道查询模式回写地址寄存器(0x88、0x8C) 2.7 H2C通道中断掩码寄存器(0x90)​ 2.8 H2C通道性能监视控制寄存器(0xC0) 2.9 H2C通道周期计数性能寄存器(0xC4、0xC8) 2

一个早起的程序员 5204

Apifox接口测试+自动化测试

Apifox 接口测试+自动化测试快速入门!

程序员小杨哥的博客 1万+

Apache HttpClient: 一个非常流行的 HTTP 客户端库

它封装了底层的 TCP/IP 通信细节,提供了简单易用的 API 来构建 HTTP 请求(如 GET、POST、PUT、DELETE 等),并将这些请求发送到指定的服务器。:Apache HttpClient 提供了全面的 HTTP 客户端功能,包括 GET、POST、PUT、DELETE 等各种请求方法,以及支持 HTTP/1.1 和 HTTP/2 协议。同时,HttpClient 的设计也考虑到了扩展性,使得开发者可以轻松地添加自定义的请求拦截器、响应处理器等组件,以满足特定的需求。

Aaron_945的博客 3075

腾讯微搭低代码开发实战电子书:医疗挂号小程序

本书通过一个完整的“医疗挂号小程序”项目,深度讲解腾讯微搭(WeDa)低代码平台在复杂业务场景下的实战应用。从登录体系搭建、用户注册,到就诊人管理、科室排班与预约下单,全程遵循“配置+逻辑+实战”的思路,带领读者从零实现具备商业级可用性的医疗挂号小程序,掌握低代码开发的核心技巧与业务落地能力。

低代码布道师的博客 951

Python通过HTTP代理发送请求

在Python网络编程中,通过HTTP代理发送请求是常见的需求,无论是为了访问受限资源、保护隐私还是实现爬虫功能。本文将详细介绍如何使用Python标准库和第三方库通过HTTP代理发送请求。通过以上方法,你可以灵活地在Python中通过HTTP代理发送各种HTTP请求,满足不同的网络访问需求。请求头设置:有些网站会检查User-Agent等请求头。代理稳定性:免费代理通常不可靠,建议使用付费代理服务。异常处理:网络请求可能失败,应添加适当的异常处理。提供了基本的HTTP请求功能,可以通过。

weixin_73725158的博客 601

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

使用Python的requests库来发送HTTP请求

使用Python的"requests"库来发送 HTTP 请求非常简单,"requests"是一个流行的第三方库,支持各种类型的HTTP请求,并且它的API设计非常简洁易用。

zhang120529的博客 1148

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

在 Node.js 中发出 HTTP 请求的 5 种方法

在 Node.js 中发出 HTTP 请求的 5 种方法

qq_42880714的博客 5307

揭秘Python发送HTTP请求的5种方式:哪种最适合你的项目?

掌握Python发送HTTP请求的5种实用方法,涵盖requests、urllib等库的应用场景与优势对比,提供清晰的Python HTTP 请求示例。无论爬虫还是API调用,都能找到合适方案,提升开发效率,值得收藏

PixelShoal的博客 529

Python基础教程:requests模块发送http请求

requests模块是 Python 中处理 HTTP 请求的强大工具,它提供了简单易用的 API,让我们可以轻松地发送各种类型的 HTTP 请求,并处理响应。通过本教程的学习,你应该已经掌握了如何使用requests模块发送 GET 和 POST 请求,处理响应,设置请求头,以及处理超时和异常等基本操作。在实际开发中,你可以根据具体需求灵活运用这些知识。

Taobaoapi2014的博客 1165

Java中5中发送HTTP请求的的方式

发送HTTP请求时现代编程中的核心功能,也是我们学习一种编程语言时最先想做的事。在Java中,有多种方式实现此功能,比如JDK或第三方库,这篇文章将会介绍我所知的Java中HTTP客户端,如果你使用过其他的,那很好,请告诉我。这篇文章将会涉及: JDK中: HttpURLConnection HttpClient 流行的第三方库: ApacheHttpClient OkHttp Retrofit 我将会使用 NASA APIs 中每天一图Astronomy Picture of the Day做为示

jinjiating的专栏 428

Java发送HTTP GET请求的5种高效方法

Java发送HTTP GET请求的方法及比较 摘要: Java提供了多种发送HTTP GET请求的方式,主要包括:1) Java 11引入的HttpClient API(支持HTTP/2和异步请求);2) 传统的HttpURLConnection;3) Apache HttpClient库;4) OkHttp客户端。其中Java 11的HttpClient作为现代化解决方案,具有更简洁的API设计和更好的功能支持,推荐在新项目中使用。其他方法如HttpURLConnection适合简单场景,而第三方库(Ap

2603_96171993的博客 15

[爬虫]1.3.1 使用requests库发送HTTP请求

Python的requests库是一个非常流行的用于发送HTTP请求的库。它的接口设计得非常简洁明了,使得发送HTTP请求变得非常简单。首先,你需要安装requests库。

Andy0214的专栏 5838

在Node.js中发起HTTP请求的5种方法

深入解析Node.js中5种发起HTTP请求的方法 翻译:疯狂的技术宅 英文标题:5 Ways to Make HTTP Requests in Node.js 原文链接:www.twilio.com/blog/2017/0… 创建HTTP请求使现代编程语言的核心功能之一,也是很多程序员在接触到新的开发环境时最先遇到的技术之一。在Node.js中有相当多的解决方案,其中有语言内置功能,也有开...

weixin_33674976的博客 1120

java程序发送异步http请求

Apache HttpClient 提供了异步支持,但配置稍复杂。OkHttp 是一个流行的第三方HTTP客户端库,支持异步回调。支持异步请求,无需第三方依赖。Java 11 引入了新的。

zru_9602的博客 1053

Rust网络请求神器reqwest介绍和使用,5分钟速学

在 Rust 生态中,reqwest 可以说是最流行的 HTTP 客户端库了。它提供了一个高层级的、人性化的 API,让我们可以非常轻松地发送各种 HTTP 请求和处理响应。无论是 quickstart、自定义请求头、cookie 管理,还是文件上传,reqwest 都能帮我们优雅地搞定。

3487
上一篇: React 18 升级指南,超简单
下一篇: 7个 优秀的远程“结对编程“编码工具
蟹蟹蟹风流
蟹蟹蟹风流 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄11年 3万+粉丝 396原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蟹蟹蟹风流

期望和你分享一杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值