Ruby的’open-uri’和’Net:HTTP’gem有什么区别?
看起来这两个gem执行非常相似的任务。 任何人都可以举例说明一块gem比另一颗gem更有用吗? 我没有具体的代码,我更想知道每个gem的一般用例。 我知道这是一个简短的问题,我会根据要求填写空白。 谢谢。
他们看起来像执行类似任务的原因是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.html和http://ruby-doc.org/stdlib-1.9.3//libdoc /net/http/rdoc/Net.html
我刚刚发现open
确实遵循重定向,而Net::HTTP
则没有,这是一个重要的区别。
例如, open('http://www.stackoverflow.com') { |content| puts content.read }
open('http://www.stackoverflow.com') { |content| puts content.read }
将在重定向后显示正确的HTML,而Net::HTTP.get(URI('http://www.stackoverflow.com'))
将显示重定向消息和302状态代码。