我是节点JS的新手,在learnyounode的nodeJS练习8中,我的解决方案产生了相同的需求结果。我很困惑何时使用http.get和Request
目标:
编写一个程序,对提供给您的URL执行HTTP GET请求
作为第一个命令行参数。从服务器收集所有数据(不是
只是第一个"数据"事件)然后写两行到控制台
(标准输出)。
你写的第一行应该是一个表示数字
的整数
从服务器收到的字符数。第二行应包含
完整服务器发送的字符串。
官方解决方案
var http = require('http')
var bl = require('bl')
http.get(process.argv[2], function (response) {
response.pipe(bl(function (err, data) {
if (err)
return console.error(err)
data = data.toString()
console.log(data.length)
console.log(data)
}))
})
我的解决方案
var request=require('request')
request(process.argv[2],function(err,response,body){
console.log(body.length);
console.log(body);
})
答案 0 :(得分:1)
由于大多数请求都是没有主体的GET请求,因此Node.js提供了 这种方便的方法。这种方法与之间的唯一区别 http.request()是它将方法设置为GET并调用req.end() 自动。请注意,必须在中消耗响应数据 回调,原因在http.ClientRequest部分中说明。
那么,究竟是什么意思,就是你可以毫无问题地按照自己的方式去做。但是request
不是节点本身附带的模块,它是一个模块,可以让开发人员更容易地使用http(s)请求。所以我在这里猜测,你正在学习NodeJS,不应该使用第三方。
答案 1 :(得分:1)
我不熟悉请求,但它似乎只是npm package包装了标准库的功能。您可以同时使用这两个,但我建议您阅读http.get和request的文档,如果您发现标准库函数(http.get)足以满足您的需求,我就没有理由您应该使用请求包。