簡體   English   中英

在 Ruby 中的單個 object 中保存多個 api 響應

[英]Saving multiple api response in a single object in Ruby

我有一個場景,我需要將多個 API 響應轉換為一個 object。 怎么可能? 下面是我的代碼。 如何將其轉換為單個 object?

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 ? 

由於缺少有關單個響應外觀的信息,我只能建議構建一個新的 object。 根據給定的小信息,這個答案沒有優化和高度固執己見。

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 來代表這個 object。 要讓它發揮作用,你需要一個好名字。 也許像

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM