使用Node JS制作一个正确的GET请求

Crafting a Proper GET request using Node JS

本文关键字:一个 请求 GET JS Node 使用      更新时间:2023-09-26

对javaScript和Node.js都很陌生。

基本上我要做的是使用asynch模块(一个node.js模块)对许多不同的"网站"进行异步调用。

例如,向5个网站发送一个GET请求,并打印它们的响应。

问题是,我试图使用XMLHttpRequest();javascript对象,但它似乎不工作在Node.js,说它是未定义的。我相信这是因为该对象需要在浏览器中使用。这是真的吗?

无论如何,我如何使用Node.js发送get请求?没有在HTML中嵌入javascript或类似的东西。严格的node . js。这应该很简单,不是吗?

这里有一个非常基本的例子(摘自某本书):

function myFunction(theUrl) {
    var xmlHttp = null;
    xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", theUrl, false );
    xmlHttp.send();
    console.log(xmlHttp.responseXml);
    console.log("Finished!");
    return xmlHttp.responseText;
}
编辑:

好的,我已经成功发送了一个"GET"请求(我相信)。

我将输出打印到一个文件(只是为了测试)。除了,我得到了一个负载的XML(也许JSON)回来,但没有"200 OK"的消息在任何地方。

如果我发送一个"HEAD"请求,我什么也得不到。

两个问题:为什么我没有收到200 OK消息?我得到的XML是什么?另外,为什么"HEAD"请求不返回任何东西?Node.JS是否将其剥离?

我想要分离消息响应(希望是"200 OK")和所有其他标头。我怎么能做到这一点,如果我没有得到标题??

我相信这是因为该对象需要在浏览器中使用。这是真的吗?

不完全是。

  • XMLHttpRequest不是JavaScript核心的一部分,它是W3C规范
  • 浏览器提供了一个XMLHttpRequest对象,所以你不需要做任何特别的事情就可以在浏览器中使用它。通过NPM, Node.js可以使用第三方XMLHttpRequest模块。(我曾经用它为一个通常在浏览器中运行的JS库编写命令行测试。)

你只需要安装模块和require它(按照文档中的说明)。