http.get()方法和var request = require('request')有什么区别

我是新来的节点JS,在learnyounode的nodeJS练习no.8中,我的解决scheme产生相同的require结果。我很困惑什么时候使用http.get和Request

目标 :编写一个执行HTTP GET请求的程序给你提供的URL
作为第一个命令行参数。 从服务器收集所有数据(不是
只是第一个“数据”事件),然后写两行到控制台
(标准输出)。

你写的第一行应该只是一个表示数字的整数
从服务器收到的字符。 第二行应该包含
完成服务器发送的string。

官方解决scheme

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) })) }) 

我的解决scheme

 var request=require('request') request(process.argv[2],function(err,response,body){ console.log(body.length); console.log(body); }) 

从nodeJS文档 :

由于大多数请求是没有body的GET请求,Node.js提供了这种方便的方法。 这个方法和http.request()之间的唯一区别是它将方法设置为GET并自动调用req.end()。 请注意,由于http.ClientRequest部分中陈述的原因,必须在callback中使用响应数据。

那么,究竟是什么意思呢,就是你可以毫无问题地做到这一点。 但是request不是节点本身附带的模块,而是开发人员更容易使http请求更容易的模块。 所以我在这里猜测,你正在学习NodeJS,而不是使用第三方应该是要走的路。

我不熟悉请求,但它似乎只是一个包装标准库function的npm包 。 你可以同时使用,但我会build议阅读http.get和请求的文档,如果你发现标准库函数(http.get)足够你的需求,我不明白你应该使用请求包的原因。