这是我在很多应用程序中使用的一个方便的类抽象……它完全从视图控制器逻辑中抽象出 API 调用逻辑,以分离关注点,并且在Matt Green 的 Inspect 2013演讲之后大量建模。
class MyAPI
APIURL = "http://your.api.com/whatever.json?date="
def self.dataForDate(date, &block)
BW::HTTP.get(APIURL + date) do |response|
json = nil
error = nil
if response.ok?
json = BW::JSON.parse(response.body.to_str)
else
error = response.error_message
end
block.call json, error
end
end
end
然后调用这个类,我们这样做:
MyAPI.dataForDate(dateString) do |json, error|
if error.nil?
if json.count > 0
json.each do |cd|
# Whatever with the data
end
else
App.alert("No Results.")
end
else
App.alert("There was an error downloading data from the server. Please check your internet connection or try again later.")
end
end