我一直在Why's (Poignant) Guide to Ruby工作。在Chapter 6中,_Why引导读者使用open-uri与简单的Web服务(“Preeventualist的丢失和查找注册表”)进行交互:
SEARCHING
=========
要搜索丢失的项目,请使用以下地址:http://preeventualist.org/lost/search?q= {搜索 字}
您可以用{替换{search word} 你的搜索字词。例如,到 搜索“杯子”:
http://preeventualist.org/lost/search?q=cup
您将获得一份杯子清单 失去或找到的。
如果您只想搜索丢失的内容 杯子或只找到杯子,使用 'searchlost'和'searchfound'页面:
哪个不起作用。
The Preeventualist 的original static content已在_why's Estate处镜像,但遗憾的是搜索服务尚未配置:
http://viewsourcecode.org/why/preeventualist/search?q=bacon
是否有_why以前的preeventualist网络服务的工作镜像?如果没有,那么类似的模拟怎么样:一个服务返回换行符分隔的原始文本列表以响应不同的搜索?
答案 0 :(得分:5)
https://github.com/mistydemeo/preeventualist
显然,mistydemeo根据_why的尖锐指南第6章重新创建了整个规范。
该重新生成的服务版本与Poignant Guide中指定的API 100%兼容,但也添加了一些新功能,如JSON和Brooklyn Integer支持。
答案 1 :(得分:1)
Open-URI本身很容易使用,而且,如果你考虑一下,几乎每个网站都有资格返回你正在谈论的那种文件,虽然它是HTML,这是带文字的行-breaks(通常)。
举个例子,试试:
require 'open-uri'
body_ios = open('http://www.iana.org/domains/example/')
puts body_ios.lines.first
将输出:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
这是一条单独的文字。
_Why的示例中缺少什么是传递查询,但是,如果您了解查询在普通URL中的工作方式(例如在浏览器中使用时),那么使用Open-URI进行查询时没有任何新的或独特的。您请求URL,服务器返回结果,Open-URI将其作为您可以读取的IO流返回给您,或者像处理其他IO流一样处理。
Open-URI非常灵活,可以轻松地远程读取页面或文件。它也透明地处理重定向,这很不错。
随着您的进步,您可能需要更灵活的内容,在这种情况下,我会推荐Typhoeus,HTTPClient或Patron宝石。