如何解决在 Ruby 中的单个对象中保存多个 api 响应
我有一个场景,我需要将多个 API 响应转换为一个对象。有可能吗?下面是我的代码。如何将其转换为单个对象?
require 'httparty'
require 'json'
def make_request(url)
HTTParty.get(url,headers: { 'Accept' => 'application/json' }).parsed_response
end
numberone_apis = make_request('api.openweathermap.org/data/2.5/forecast/daily?q={city name},{state code}&cnt={cnt}&appid={API key}')
numbertwo_apis= make_request('api.openweathermap.org/data/2.5/forecast/daily?q={city name},{state code},{country code}&cnt={cnt}&appid={API key}')
numberthree_apis = make_request('api.openweathermap.org/data/2.5/forecast/daily?q={city name}&cnt={cnt}&appid={API key})
puts numberone_apis
puts numbertwo_apis
puts numberthree_apis
convert_object2one = how ?
解决方法
由于缺少有关单个响应外观的信息,我只能建议构建一个新对象。基于给定的少量信息,此答案并未优化且高度自以为是。
require 'httparty'
require 'json'
def make_request(url)
HTTParty.get(url,headers: { 'Accept' => 'application/json' }).parsed_response
end
whole_response = {}
whole_response['numberone_apis'] = make_request('api.openweathermap.org/data/2.5/forecast/daily?q={city name},{state code}&cnt={cnt}&appid={API key}')
whole_response['numbertwo_apis'] = make_request('api.openweathermap.org/data/2.5/forecast/daily?q={city name},{state code},{country code}&cnt={cnt}&appid={API key}')
whole_response['numberthree_apis'] = make_request('api.openweathermap.org/data/2.5/forecast/daily?q={city name}&cnt={cnt}&appid={API key}')
puts whole_response
#=>
{
'numberone_apis':
{ ... },'numbertwo_apis':
{ ... },'numberthree_apis':
{ ... }
}
,
这样做的一种方法是创建一个表示此对象内容的类。为了让它发挥作用,你需要一个好名字。也许像
class WeatherReport
def initialize(...
get_data
assemble
end
def get_data
make_first_request
...
end
def make_first_request
@first_response = make_request('api ...
end
...
def assemble
# add the responses together
end
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。