Ruby的'open-uri'和'Net:HTTP'宝石有什么区别?

Ric*_*mas 20 ruby gem open-uri net-http

看起来这两个宝石都执行非常相似的任务.任何人都可以举例说明一个宝石比另一宝石更有用吗?我没有具体的代码,我更想知道每个gem的一般用例.我知道这是一个简短的问题,我会根据要求填写空白.谢谢.

Ale*_*hey 23

他们看起来像执行类似任务的原因是OpenURI是Net :: HTTP,Net :: HTTPS和Net :: FTP的包装器.

通常,除非您觉得需要较低级别的界面,否则使用OpenURI会更好,因为您可以使用更少的代码.使用OpenURI,您可以打开URL/URI并将其视为文件.

见:http://www.ruby-doc.org/stdlib-1.9.3/libdoc/open-uri/rdoc/OpenURI.htmlhttp://ruby-doc.org/stdlib-1.9.3//libdoc /net/http/rdoc/Net.html

  • 包装器只是一个库,它使用一个或多个其他库来创建更好,更高级别的接口.在这种特定情况下,OpenURI使用Net库来公开更熟悉的界面,即从文件中读取的界面. (9认同)
  • 谢谢亚历克斯。抱歉,什么是“包装纸”? (2认同)

Tom*_*ero 5

我只是发现open确实遵循重定向,而Net::HTTP并非遵循重定向,这是一个重要的区别。

例如,open('http://www.stackoverflow.com') { |content| puts content.read }在遵循重定向后将显示正确的HTML,而Net::HTTP.get(URI('http://www.stackoverflow.com'))将显示重定向消息和302状态代码。