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

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

现代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访问的上传事件。上传字段。当请求体必须携带大量数据(如图像、文件等)时,这些事件处理程序帮助我们跟踪数据上传进度。


相关文章
|
5天前
|
缓存 前端开发 API
|
20小时前
|
开发者
HTTP 协议请求方法的发展历程
【10月更文挑战第21天】
|
21小时前
|
安全
HTTP 协议的请求方法
【10月更文挑战第21天】
|
20小时前
|
缓存 安全 前端开发
HTTP 协议的请求方法在实际应用中有哪些注意事项?
【10月更文挑战第29天】HTTP协议的请求方法在实际应用中需要根据具体的业务场景和需求,合理选择和使用,并注意各种方法的特点和限制,以确保网络通信的安全、高效和数据的一致性。
|
4天前
|
安全 API 数据安全/隐私保护
常见的HTTP请求方法
【10月更文挑战第25天】这些HTTP请求方法共同构成了客户端与服务器之间交互的基础,使得客户端能够根据不同的需求对服务器资源进行各种操作。在实际应用中,开发者需要根据具体的业务场景和资源的性质选择合适的请求方法来实现客户端与服务器之间的有效通信。
|
4天前
|
安全 前端开发 JavaScript
利用HTTP协议进行文件上传和下载的常见方法
【10月更文挑战第25天】可以利用HTTP协议方便地实现文件的上传和下载功能,满足不同应用场景下的需求。在实际应用中,还可以根据具体的业务需求和安全要求,对文件上传和下载的过程进行进一步的优化和安全处理。
|
9天前
|
存储 安全 网络协议
HTTP 请求方法
【10月更文挑战第22天】HTTP 请求方法
17 2
|
9天前
|
缓存 JSON 安全
HTTP请求发送方法
HTTP请求发送方法【10月更文挑战第22天】
18 2
|
Web App开发 前端开发 Android开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
使用MAT分析内存泄露 对于大型服务端应用程序来说,有些内存泄露问题很难在测试阶段发现,此时就需要分析JVM Heap Dump文件来找出问题。
779 0