广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >JavaScript中怎么发出HTTP请求
  • 544
分享到

JavaScript中怎么发出HTTP请求

2024-04-02 19:04:59 544人浏览 薄情痞子
摘要

这篇文章给大家介绍javascript中怎么发出Http请求,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。XMLHttpRequestXMLHttpRequest对象可用于从WEB服务

这篇文章给大家介绍javascript中怎么发出Http请求,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

XMLHttpRequest

XMLHttpRequest对象可用于从WEB服务器请求数据。它是这次比较中最早的方法,尽管其他选择都优于它,但由于其向后兼容性和成熟度,它仍然有效且有用。

得到:

var req= new XMLHttpRequest();//The onreadystatechange property //specifies a function to be //executed every time the status //of the XMLHttpRequest changes req.onreadystatechange = function() {     if (this.readyState == 4 &&this.status == 200) {        //The responseText property        //returns a text string                  console.log(xhttp.responseText)        //Do some stuff     } };req.open("GET", "http://dataserver/users", true); req.send();

发送:

varfORMData = new FormData(); formData.append("name", "Murdock"); var req = new XMLHttpRequest(); req.open("POST", "http://dataserver/update"); req.send(formData);

优点:

  • 不需要从外部源加载

  • 向后兼容性

  • 成熟/稳定

  • 在所有浏览器中均可使用

  • 是原生浏览器api

缺点:

  • 支持回调地狱

  • 笨拙冗长的语法

  • Fetch能自然地替代它

Qwest

Qwest是一个基于Promise的简单ajax库,它支持XmlHttpRequest2的独立数据,例如ArrayBuffer,Blob和FormData。

得到:

qwest.get('http://dataserver/data.JSON')      .then(function(xhr, response) {         // ...do some stuff whith data      });

发送:

qwest.post('http://dataserver/update',{         firstname: 'Murdock',               age: 30      })      .then(function(xhr, response) {         // Make some useful actions      })      .catch(function(e, xhr, response) {         // Process the error      });

优点:

  • 可以建立请求限制

  • 基于Promise

缺点:

  • 并非所有浏览器上都可使用XmlHttpRequest2

  • 非原生

  • 必须从外部源加载

JQuery.ajax

该库在不久前被广泛用于发出HTTP异步请求。Jquery的所有Ajax方法都返回XMLHTTPRequest对象的超集

得到:

$.ajax({     url: 'http://dataserver/data.json'   }).done(function(data) {     // ...do some stuff whith data   }).fail(function() {     // Handle error });

发送:

$.ajax({   type: "POST",   url: 'http://dataserver/update',   data: data,   success: successCallBack,   error: errorCallBack,   dataType: dataType });

优点:

  • 良好的支持和文档

  • 可配置的对象

  • 在许多项目中使用

  • 学习曲线低

  • 它返回XMLHttpRequest对象,因此可以中止请求

缺点:

  • 非原生

  • 必须从外部源加载

  • 没有与Promises结合

  • 对于原生es6 Fetch不是必需的。

Axios

JavaScript中怎么发出HTTP请求
图源:unsplash

基于Promise的HTTP库,用于在浏览器和nodejs上执行HTTP请求。

得到:

axiOS({   url: 'http://dataserver/data.json',   method: 'get' })

发送:

axios.post('http://dataserver/update',{     name: 'Murdock'   })   .then(function (response) {     console.log(response);   })   .catch(function (error) {     console.log(error);   });

优点:

  • 使用promise避免回调地狱

  • 在浏览器和nodejs上均可使用

  • 支持上传进度

  • 可以设置响应超时

  • 通过简单地向其传递配置对象即可配置请求

  • Axios已实现可撤销的promise提议

  • 自动将数据转换为JSON

缺点:

  • 非原生

  • 必须从外部源加载

SuperAgent

SuperAgent是ajax API,旨在提供灵活性,可读性和较低的学习曲线。它也可以与node.js一起使用。

得到:

request('GET','http://dataserver/data.json').then( success, failure);

.query()方法接受对象,这些对象与GET方法一起使用时将形成查询字符串。以下代码将产生路径/ dataserver / search?name =  Manny&lastName = Peck&order = desc。

request    .get('/dataserver/search')    .query({ name: 'Templeton' })    .query({ lastname: 'Peck' })    .query({ order: 'desc' })    .then(res => {console.dir(res)} });

发送:

request    .post('http://dataserver/update')    .send({ name: 'Murdock' })    .set('Accept', 'application/json')    .then(res => {       console.log('result' +JSON.stringify(res.body));    });

优点:

  • 基于Promise

  • 在Node.js和浏览器中均可使用

  • 可以调用request.abort()方法中止请求

  • 社区的知名库

  • 发出HTTP请求的无缝接口

  • 出现故障时支持重试请求

缺点:

  • 它不支持以XMLHttpRequest的形式监视加载进度

  • 非原生

  • 必须从外部源加载

JavaScript中怎么发出HTTP请求
图源:unsplash

Http-client

Http-client允许使用JavaScript的访存API组成HTTP客户端。

得到:

//usingES6 modules import { createFetch, base, accept, parse } from 'http-client'const fetch =createFetch(  base('http://dataserver/data.json'),    accept('application/json'),       parse('json')                      )fetch('http://dataserver/data.json').then(response => {   console.log(response.jsonData) })

发送:

//usingES6 modules import { createFetch, method, params } from 'http-client'const fetch =createFetch(   params({ name: 'Murdock' }),   base('http://dataserver/update') )

优点:

  • 在Node.js和浏览器中均可使用

  • 由服务器端工作人员使用

  • 基于Promise

  • 提供头部保护装置,以提高CORS的安全

缺点:

  • 必须从外部源加载

  • 非原生

Fetch

Fetch是原生浏览器API,用于发出替代XMLHttpRequest的请求。与XMLHttpRequest相比,Fetch使网络请求更容易。Fetch  API使用Promises避免XMLHttpRequest回调地狱。

得到:

//WithES6 fetch fetch('http://dataserver/data.json')   .then(data => {     // ...do some stuff whith data   }).catch(error => {     // Handle error });

发送:

fetch('http://dataserver/update',{   method: 'post',   headers: {     'Accept': 'application/json,text/plain, */*',     'Content-Type': 'application/json'   },   body: JSON.stringify({name: 'Murdock'}) }).then(res=>res.json())   .then(res => console.log(res));//ORwith ES2017 for example(async () => {     const response = awaitfetch('http://dataserver/update', {     method: 'POST',     headers: {       'Accept': 'application/json',       'Content-Type': 'application/json'     },     body:JSON.stringify({name='Murdock'})   });const result = awaitresponse.json();console.log(result); })();

优点:

  • 是原生浏览器API

  • Fetch基本上是经过完善的XMLHttpRequest

  • 友好且易于学习

  • 与大多数最近使用的浏览器兼容

  • 是原生XMLHttpRequest对象的自然替代

  • 学习曲线低

  • 不需要从外部源加载它

  • 使用promises避免回调地狱

  • 不需要更多依赖项

缺点:

  • 处理JSON数据的过程分为两步。第一个是发出请求,然后第二个是在响应时调用.json()方法。对于Axios,默认情况下会收到JSON响应。

  • 从Fetch()返回的Promise仅在网络故障或任何阻止请求完成的情况发生时拒绝。即使响应为HTTP  404或500,也不会拒绝HTTP错误状态。

  • 缺乏其他库的一些有用功能,例如:取消请求。

  • 默认情况下,Fetch不会从服务器发送或接收Cookie,如果站点依赖于维持用户会话,则会导致未经身份验证的请求。但是可以通过添加以下内容来启用:

  • {credentials: “same-origin.”}

Fetch是一个新标准,新版本的Chrome和Firefox无需使用任何其他库就可支持它。

此外,Axios,SuperAgent或其他库都有适合的文档,易于使用,并且学习曲线不太高。在某些情况下,它们可以提供Fetch不具有的功能。

Fetch在JavaScript里是原生的,足以满足项目需求。如果没有特殊需求,我认为Fetch就是最合适的选择。

关于JavaScript中怎么发出HTTP请求就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: JavaScript中怎么发出HTTP请求

本文链接: https://www.lsjlt.com/news/69912.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript中怎么发出HTTP请求
    这篇文章给大家介绍JavaScript中怎么发出HTTP请求,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。XMLHttpRequestXMLHttpRequest对象可用于从Web服务...
    99+
    2022-10-19
  • ASP.NET Core怎么使用IHttpClientFactory发出HTTP请求
    今天小编给大家分享一下ASP.NET Core怎么使用IHttpClientFactory发出HTTP请求的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章...
    99+
    2023-06-29
  • ASP.NETCore使用IHttpClientFactory发出HTTP请求
    1.HttpClient类使用存在的问题 HttpClient类的使用所存在的问题,百度搜索的文章一大堆,好多都是单纯文字描述,让人感觉不太好理解,为了更好理解HttpClient使...
    99+
    2022-11-13
  • feign怎么打印出http请求
    这篇文章主要讲解了“feign怎么打印出http请求”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“feign怎么打印出http请求”吧!feign打印出http请求用openfign依赖需要...
    99+
    2023-07-02
  • Python Http发送请求怎么实现
    本篇内容介绍了“Python Http发送请求怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!浅析requests在不借助其...
    99+
    2023-07-02
  • 怎么在Java中发起一个http请求
    这期内容当中小编将会给大家带来有关怎么在Java中发起一个http请求,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、GET与POSTGET和POST是HTTP的两个常用方法。GET指从指定的服务器中获...
    99+
    2023-06-14
  • Node.js中如何发起HTTP请求
    这篇文章主要介绍Node.js中如何发起HTTP请求,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!正文Node.js HTTPS ModuleNode.js在标准库中带有https模...
    99+
    2022-10-19
  • PHP中如何发送HTTP请求?
    PHP是一门广泛使用的编程语言,它支持发送HTTP请求。发送HTTP请求可以用于与远程服务器通信,从而获取或发送数据。在本篇文章中,我们将讨论PHP中如何发送HTTP请求。发送HTTP请求的方式有多种,包括使用curl库、file_get_...
    99+
    2023-05-24
    PHP发送HTTP请求 HTTP请求方法 PHP HTTP客户端
  • JAVA中的HTTP请求怎么利用HttpClient实现发送
    JAVA中的HTTP请求怎么利用HttpClient实现发送?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。HttpClient介绍HttpClient 不是一个...
    99+
    2023-05-31
    java httpclient http
  • Java使用HttpUtils怎么实现发送HTTP请求
    本篇文章和大家了解一下Java使用HttpUtils怎么实现发送HTTP请求。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。目录第一部分:简单总结HTTP请求常用配置第二部分:使用JavaLib的HttpUtils第三部分...
    99+
    2023-07-06
  • javascript怎么发送ajax请求参数
    这篇文章主要介绍“javascript怎么发送ajax请求参数”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“javascript怎么发送ajax请求参数”文章能帮助大家解决问题。先通过 JavaSc...
    99+
    2023-07-06
  • Python发送Http请求时,中文乱码
    解决方法: 先encode再quote。 原理: msg.encode('utf-8')是解决中文乱码问题。 quote():假如URL的 name 或者 value 值中有『&』、『%』或者『=』等符号,就会有问题。所以URL...
    99+
    2023-01-31
    乱码 中文 Python
  • jMeter中怎么发送两个逻辑相关的HTTP请求
    这期内容当中小编将会给大家带来有关jMeter中怎么发送两个逻辑相关的HTTP请求,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。现在我有另一个需求场景:假设我开发了一个创建Service Request的...
    99+
    2023-06-03
  • 怎么用Python爬虫搞定发送中文HTTP请求头
    本篇内容主要讲解“怎么用Python爬虫搞定发送中文HTTP请求头”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python爬虫搞定发送中文HTTP请求头”吧!有时需要将HTTP请求头的值...
    99+
    2023-06-15
  • http请求怎么在spring boot中使用
    今天就跟大家聊聊有关http请求怎么在spring boot中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先是经过封装:一:初始化httpclientprivate ...
    99+
    2023-05-30
    springboot http
  • nodejs中怎么实现一个http请求
    nodejs中怎么实现一个http请求,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。nodejs http请求相关总结通过no...
    99+
    2022-10-19
  • Java中出现HTTP请求超时如何处理
    这篇文章给大家介绍Java中出现HTTP请求超时如何处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在发送POST或GET请求时,返回超时异常处理办法:捕获 SocketTimeoutException | Conn...
    99+
    2023-06-14
  • 怎么用VBS实现发送带Cookie的HTTP请求
    这篇文章主要介绍怎么用VBS实现发送带Cookie的HTTP请求,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!为了方便测试,先写一个回显Cookie的简单的PHP程序: 代码如下:<php foreach($_...
    99+
    2023-06-08
  • C# winform请求http怎么实现
    本篇内容主要讲解“C# winform请求http怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C# winform请求http怎么实现”吧!一:.Net中有两个类 ...
    99+
    2023-07-02
  • php怎么设置http请求体
    在PHP中,可以使用以下两种方法设置HTTP请求体:1. 使用`file_get_contents()`函数发送POST请求,并设置...
    99+
    2023-08-15
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作