我正在嘗試向Web服務(fwix)發出請求,並在我的Rails應用程序中創建了以下初始化程序,該初始化程序適用於... sorta,I有兩個問題,但是:Ruby,形成API請求而不隱式聲明每個參數
出於某種原因,該參數的值需要有
+
的作爲空間,這是我可以用紅寶石完成一個標準的事情嗎?此外,這是一個標準的方式來形成一個網址?我認爲空間是%20
。在我的代碼我怎麼能採取任何的發送選項,只是使用它們,而不必註明每一個像
query_items << "api_key=#{options[:api_key]}" if options[:api_key]
以下是我的代碼,故障區域,我的對於最後一個方法中的每個參數都有query_items
開頭的行,任何想法都會很棒!
require 'httparty'
module Fwix
class API
include HTTParty
class JSONParser < HTTParty::Parser
def json
JSON.parse(body)
end
end
parser JSONParser
base_uri "http://geoapi.fwix.com"
def self.query(options = {})
begin
query_url = query_url(options)
puts "querying: #{base_uri}#{query_url}"
response = get(query_url)
rescue
raise "Connection to Fwix API failed" if response.nil?
end
end
def self.query_url(input_options = {})
@defaults ||= {
:api_key => "my_api_key",
}
options = @defaults.merge(input_options)
query_url = "/content.json?"
query_items = []
query_items << "api_key=#{options[:api_key]}" if options[:api_key]
query_items << "province=#{options[:province]}" if options[:province]
query_items << "city=#{options[:city]}" if options[:city]
query_items << "address=#{options[:address]}" if options[:address]
query_url += query_items.join('&')
query_url
end
end
end
這很好用!謝謝! – 2011-05-17 04:18:31