Fetch API 与 XMLHttpRequest
XMLHttpRequest对象用于与服务器异步通信,这意味着我们可以在后台与服务器交换数据,而无需刷新整个页面。 XMLHttpRequest 是最常用的技术,这就是为什么大多数主流浏览器(例如 Google Chrome、Safari、Mozilla Firefox 或 Opera)都使用它的原因。 它还支持纯文本、JSON 数据和更多数据格式。 它非常易于使用,并提供了各种方法和属性来执行操作。 我们可以使用 XMLHttpRequest() 构造函数创建一个 XMLHttpRequest 对象。
语法
variableName = new XMLHttpRequest()
使用 new 关键字和 XMLHttpRequest() 构造函数,我们可以创建一个新的 XMLHttpRequest 对象。 该对象必须在调用 open() 函数之前创建,并在调用 send() 函数将请求发送到 Web 服务器之前对其进行初始化。
Fetch API提供了一个用于从服务器获取/检索资源的接口。 它是 XMLHttpRequest 的现代替代品。 它支持请求和响应的通用定义,因此我们可以在将来如果需要缓存 API、服务工作、处理或修改请求和响应等时访问它们。它非常容易、简单且一致。 或者我们可以说,与 XMLHttpRequest 相比,它提供了一种现代且灵活的方法来创建 HTTP 请求和处理响应。 它基于 Promise API,提供清晰的语法和更好的错误处理。
语法
fetch(res)
其中 fetch() 采用一个强制参数,即 res。 res 参数定义要获取的资源,它可以是字符串或任何其他对象,也可以是请求对象。 除了强制参数外,它还可以采用一个可选参数,可以是方法、标头、正文、模式缓存、同源等。
获取 API 与 XMLHttpRequest
以下是 Fetch API 和 XMLHttpRequest 之间的区别 −
差异 | Fetch API | XMLHttpRequest |
---|---|---|
语法 |
众所周知,Fetch API 是一个基于 Promise 的 API,因此它提供了更清晰的语法和更好的错误处理方法。 |
XHR基于回调方法,其语法不如Fetch API。 |
跨域资源共享(CROS) |
Fetch API 无需任何额外配置即可明智地处理 CROS 请求。 |
XMLHttpRequest 需要特殊配置来处理或发出跨源请求。 |
请求和响应标头 |
Fetch API 提供了更灵活的方式来处理请求和响应标头。 |
XMLHttpRequest 提供了有限数量的方法来处理请求和响应标头。 |
流式传输和解析 |
Fetch API 为流式传输和解析大型响应提供了良好的支持,因此提高了性能并减少了内存使用。 |
XMLHttpRequest 需要自定义程序才能获得此功能。 |
浏览器兼容性 |
Fetch API 是新的,因此旧版本的浏览器可能不支持。 |
XMLHttpRequest 已经使用了很多年,因此几乎所有浏览器都支持它。 |
Cookie 和凭据控制 |
Fetch API 提供了对 cookie 和凭据的良好控制,因此与 XMLHttpRequest 相比,我们可以轻松地进行身份验证和授权。 |
XMLHttpRequest 对 cookie 和凭据提供的支持较少。 |
超时 |
Fetch API 不支持超时,因此请求将继续,直到浏览器选择该请求。 |
XMLHttpRequest 支持超时。 |
结论
所以这些是 Fetch API 和 XMLHttpRequest 之间的主要区别。 与 XMLHttpRequest 相比,Fetch API 更强大且更易于理解。 所有现代浏览器也支持它,但仅旧浏览器支持 XMLHttpRequest。 现在在下一篇文章中,我们将学习 fetch() 函数。