Подтвердить что ты не робот

В чем разница между Ruby 'open-uri' и 'Net: HTTP'?

Кажется, что оба эти драгоценных камня выполняют очень похожие задачи. Может ли кто-нибудь привести примеры того, где один драгоценный камень был бы более полезным, чем другой? У меня нет конкретного кода, о котором я говорю, я больше задаюсь вопросом об общих случаях использования для каждого драгоценного камня. Я знаю, что это короткий вопрос, я буду заполнять пробелы по запросу. Спасибо.

4b9b3361

Ответ 1

Похоже, что они выполняют аналогичные задачи: 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

Ответ 2

Я только выяснил, что open выполняет перенаправления, а Net::HTTP - нет, что является важным отличием.

Например, open('http://www.stackoverflow.com') { |content| puts content.read } отобразит правильный HTML после перенаправления, а Net::HTTP.get(URI('http://www.stackoverflow.com')) отобразит сообщение перенаправления и код статуса 302.