Un pattern classico: il tuo backend interroga un'API pubblica, salva e arricchisce i dati, e li ri-espone in un formato migliore. È il cuore di un progetto come Launch Tracker.
require "faraday"
require "json"
class LaunchLibrary
BASE = "https://ll.thespacedevs.com/2.2.0"
def self.upcoming
res = Faraday.get("#{BASE}/launch/upcoming/", { limit: 20 })
JSON.parse(res.body)["results"].map do |l|
{ name: l["name"], provider: l.dig("launch_service_provider", "name"),
net: l["net"] }
end
end
end
Interroghi la fonte con Faraday, ne estrai solo i campi che ti servono con dig (che non esplode sulle chiavi mancanti), e li normalizzi.
In produzione: fai girare questa chiamata in un job in background e salva i risultati in tabella, così i tuoi utenti leggono dal tuo database veloce, non dall'API lenta di qualcun altro.