首页 >web前端 >js教程 >在node.js中提出http请求

在node.js中提出http请求

Joseph Gordon-Levitt
Joseph Gordon-Levitt原创
2025-02-24 10:15:12684浏览

Making HTTP Requests in Node.js

在node.js中提出http请求

在以前的文章中,我专注于创建一个node.js服务器来处理HTTP请求。本文通过向您展示如何从node.js应用程序中向您展示HTTP请求,以反面查看问题。您可能会问自己为什么要这样做。立即想到了两个应用程序 - 网络刮擦和代理。刮板是软件的部分,可下载网页并从编程中从中提取信息。代理服务器充当中介,将客户端请求转发给其他服务器并返回响应。


钥匙要点

Node.js中的请求模块是一种简单且灵活的工具,用于制作HTTP请求,包括GET,发布,PUT和DELETE。它是与Restful API进行交互的理想选择,可用于诸如Web刮擦和代理等任务。
    >
  • 可以将请求模块进行参数化以修改HTTP请求,从而配置诸如URI,方法,超时和重定向处理之类的参数。它还支持使用发布请求提交表单数据的提交,并可以处理以跟踪用户交互的cookie。
  • >虽然请求模块功能强大且通用,但建议参考其文档,以全面了解其功能。该模块还可以与其他模块(例如文件系统模块)结合使用,以进行更复杂的任务,例如流向文件和从文件中的http请求。
  • 请求模块
在Node.js中创建HTTP请求的最简单方法是使用请求模块。由Mikeal Rogers撰写的请求允许您提出所有类型的HTTP请求,包括GET,发布,PUT和DELETE。它的灵活性使请求模块非常适合与RESTFUL API进行交互。您可以使用以下npm命令安装请求。

>

>安装请求后,创建一个新的node.js文件,其中包含下面显示的代码。该示例的第一行用于将请求导入程序。制作HTTP请求与调用请求()函数一样简单。在此示例中,我们正在要求下载JSPRO主页。请求()的第二个参数当然是回调函数。

>
npm install request

request()回调函数采用三个参数 - 错误,响应和身体。顾名思义,错误包含有关HTTP请求期间发生的任何问题的信息。响应参数是一个对象,其中包含从呼叫返回的各种数据,包括状态代码,标题等。第三个回调论点,正文是响应的主体。在上一个示例中,主体包含JSPRO主页的源代码。>

>也可以将请求模块与文件系统模块结合使用,以将HTTP请求传输到文件和从文件中。下面的示例再次获取JSPRO。但是,它没有在控制台中显示源代码,而是写入名为“ jspro.htm”的文件。

npm install request
参数化请求

以前的示例创建了对URL的简单获取请求。但是,我们可以通过将配置对象作为第一个参数传递到请求()来修改HTTP请求。以下示例使用更强大的语法再次下载JSPRO。注意众多配置参数。 URI和方法参数告诉请求将Get请求发送到JSPRO。

超时参数告诉请求在放弃之前等待10,000毫秒(十秒)进行响应。最后两个参数涉及以下重定向。在没有用户知识的情况下,许多页面在幕后进行重定向。 lasterRedirect和maxrectect参数指示请求请求最多跟进十个3
<span>var request = require("request");
</span><span>request("http://www.sitepoint.com", function(error<span>, response, body</span>) {
</span>  <span>console.log(body);
</span><span>});</span>
xx

http redirects。另外,请注意,请求()支持此处未显示的许多其他参数。> >提交表单数据

>如前所述,请求不仅支持请求。一个非常普遍的操作是使用POST请求提交表单数据。以下示例使用请求()的表单参数作为帖子的一部分发送用户名。然后,PHP页面通过用名称向用户打招呼。

与cookie
<span>var request = require("request");
</span><span>var fs = require("fs");
</span><span>request("http://www.sitepoint.com").pipe(fs.createWriteStream("jspro.htm"));</span>
打交道

许多站点使用cookie跟踪各种用户交互。 cookie是每次HTTP事务的客户端和服务器之间来回传递的小数据。为了促进cookie的使用,请求提供jar()和cookie()方法。使用cookie()方法创建单个cookie。在以下示例的第3行中,创建了一个指定用户名称的cookie。然后将cookie添加到第2行中创建的cookie jar。发出HTTP请求后,使用JAR参数将cookie Jar发送到服务器。>

接收到响应时,将向用户打招呼,以约翰(存储在cookie中)的名字。 cookie jar还可以通过服务器进行的任何更改进行更新。如果您在请求之前和之后打印出cookie jar,您会发现服务器将cookie的值从“ John”更改为“陌生人”。相同的cookie jar可以传递给连续的http请求,以模仿真实用户与站点的交互。
<span>var request = require("request");
</span><span>request({
</span>  <span>uri: "http://www.sitepoint.com",
</span>  <span>method: "GET",
</span>  <span>timeout: 10000,
</span>  <span>followRedirect: true,
</span>  <span>maxRedirects: 10
</span><span>}, function(error<span>, response, body</span>) {
</span>  <span>console.log(body);
</span><span>});</span>

结论

>本文介绍了简单但功能强大的请求模块。由于本文并不全面,我建议至少浏览文档,以查看其他请求可以做什么。请继续关注即将发表的文章,该文章将使用请求更深入地涵盖网络刮擦。

>

,如果您喜欢阅读这篇文章,您会喜欢学习的;从大师那里学习新鲜技能和技术的地方。成员可以立即访问SitePoint的所有电子书和交互式在线课程,例如Jump Start start JavaScript。 >对本文的评论已关闭。有关于JavaScript的疑问吗?为什么不在我们的论坛上询问
> 在Node.js 中提出HTTP请求时>常见问题解答

>

>如何在node.js中提出http请求?

>您可以使用内置的HTTP或HTTPS模块在Node.js中提出HTTP请求,以用于低级控件,也可以使用Axios,Node-fetch或请求模块,用于简化且更高的第三方库-Level HTTP请求。

>使用第三方库(如Axios或Node-fetch)的优点是什么node.js中的http请求?

>第三方库提供更多用户友好的API,基于承诺或异步/等待支持的支持,并提供了诸如请求/响应处理和自动json解析之类的功能,使它们成为开发人员的流行选择。

node.js中的get和post请求有什么区别?

get请求用于从服务器检索数据,而邮政请求用于将数据发送到服务器进行处理或存储,通常以表单或API请求使用。

>

>我可以做在node.js中使用内置的HTTP模块获取和发布请求?

是的,您可以使用http或https模块进行获取和发布请求,但是它需要更多的低级代码来进行请求配置和响应处理。

>

>

请求使用Node.js中的HTTP模块?

>您可以使用http.get()方法制作获取请求,传递URL和回调函数来处理响应数据。

>同步和异步HTTP之间有什么区别node.js中的请求?

>同步请求阻止事件循环直到请求完成,而异步请求允许您的应用程序在等待响应时继续处理其他任务。

>

>我在制作http请求时如何处理错误在node.js中?

>您可以通过使用try/catch块来同步请求处理错误,并在回调中添加错误处理或使用异步请求的承诺。

>

>我可以在使用HTTP库中进行认证的请求node.js? 是的,您可以在使用第三方库(例如Axios或node-fetch)时在请求标题中包含身份验证令牌或凭据。许多API都需要身份验证以访问。>是否可以使用node.js将文件上传到http请求中? 是的,您可以通过将post请求与Multipart/form-data内容类型发送。诸如AXIOS和请求模块之类的库提供了处理文件上传的选项。

>如何在node.js中进行并发或并行HTTP请求?

为了同时提出多个HTTP请求,您可以使用Promisises或Async/等待等异步功能,也可以使用支持并行请求处理的库。

>

以上是在node.js中提出http请求的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn