【问题标题】:what is difference between http.get( ) method and var request = require('request')http.get() 方法和 var request = require('request') 有什么区别
【发布时间】:2018-01-24 14:09:22
【问题描述】:

我是node JS的新手,在learnyounode的nodeJS练习8中,我的解决方案产生了相同的require结果。我对何时使用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);
})

【问题讨论】:

  • 市面上有很多http工具,request只是另一种,http是在node.js中打包的,另一种是例如Axios
  • request是第三方库,内置http模块。
  • 是的,所以在某些情况下使用 request 代替 http.get() 是个好习惯?
  • 我不会说这是一个好的做法...但是如果它确实可以简化您的开发。问题是你正在学习 NodeJS,你不应该只学习第三方库。我建议先习惯基础知识。就像在 javascript 之前学习 jQuery 不是一个好主意。
  • 这完全取决于您的要求。例如。 request“默认遵循重定向”,http.get 没有。

标签: javascript node.js http npm node-modules


【解决方案1】:

来自nodeJS documentation

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

那么,这究竟意味着什么,您可以按照自己的方式来做,没有任何问题。但是request 不是 node 本身附带的模块,它是一个使开发人员更容易请求 http(s) 的模块。所以我在这里猜测,你正在学习 NodeJS 而不是使用第三方应该是要走的路。

【讨论】:

    【解决方案2】:

    我不熟悉request,但它似乎只是一个包装标准库功能的npm package。您可以同时使用这两种方法,但我建议您阅读 http.getrequest 的文档,如果您发现标准库函数 (http.get) 足以满足您的需求,我看不出您应该使用 request 包的理由.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-04
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 2019-08-09
      • 2019-07-17
      相关资源
      最近更新 更多