几个星期后,我已经完成了这个Html解析,它接收了一个单词,并将其计入该网址。 ' ruby counter.rb http://abcd.com你好'
class Counter
def initialize(url)
@url = url
end
def count(word, url)
doc = Nokogiri::HTML(open(url))
doc.css('head').remove
doc.text.scan(/#{word}/i).size
end
end
url, word = ARGV
puts "Found: #{Counter.new(url).count(word, url)} matches."
我想知道如何才能将其创建为Rails JSON API。我需要询问:url,:word,:count,所以JSON只需要用url构建,我要求的单词和在其中发现的重复次数。
我完全迷失了,我怎么能这样做,这似乎很容易,但我无法弄清楚。
希望有人帮助我, 感谢。
答案 0 :(得分:1)
我认为您知道如何创建rails应用程序?假设您已经完成了这项工作,您只需要定义一条路线并将其映射到您的控制器。
namespace :count do
namespace :v1 do
match 'count_words', to: 'count#count_words', via: :get
end
end
然后在controllers / count / v1 / count_controller.rb
中定义一个控制器class Count::V1::CountController < ApplicationController
def count_words
# not sure why you're passing URL twice, but hey, whatever
counter = Counter.new(params[:url])
result = counter.count(params[:url], params[:word]
render :json => result
end
end
您的问题相当模糊,但基本上,我假设您正在从前端(或外部系统)传递某种JSON消息。 Rails会为你处理框架内容,但我所做的就是选择“网址”。和&#39;字&#39;发送了这样的JSON消息:
{
"url": "www.count.co.uk",
"word": "count"
}
然后实例化您的Counter类并将此信息传递给它。然后控制器正在响应包含您的计数器结果的JSON消息。您将要确保您的计数器实际返回哈希结构,但这基本上只需要为简单的API做。
要打这样的话,你可以这样做:
localhost:3000/count/v1/count_words
传递上述JSON消息。