首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails如何组合来自两个独立API的输出数据并将它们添加到数据库中

Rails如何组合来自两个独立API的输出数据并将它们添加到数据库中
EN

Stack Overflow用户
提问于 2018-10-13 22:12:28
回答 1查看 278关注 0票数 0

在我的应用程序中,我需要从两个独立的(第三方)API中收集一些数据,并将它们添加到我的数据库中,以便进行更好的分析。

两个API都有相同数量的raws (例如,当我为相册X请求images时,它将显示该相册中所有图像的数据)

因此,两个API都有相同数量的images ,但是不同的字段和字段名。

在我的应用程序中,我只对从两个API获得5个字段的数据感兴趣。field_1field_3field_5来自first API,而field_2 & field_4来自第二API

现在我就是这样对做的-- get字段--来自first API的值(我仍然停留在如何将两个API放在一起)。

代码语言:javascript
运行
复制
## My Image Model
class Image < ActiveRecord::Base

  private

    def self.add_image_data_to_database(object, field_1, field_2, field_3, field_4, field_5)
      object.create(
          field_1: field_1,
          field_2: field_2,
          field_3: field_3,
          field_4: field_4,
          field_5: field_5,
      )
    end
end

## My Images Controller
class ImagesController < ApplicationController

  first_site_api = "api.website-1.com"
  first_api_results = HTTParty.get(first_site_api)
  first_api_json = JSON.parse(first_api_results)


  second_site_api = "api.website-2.com"
  second_api_results = HTTParty.get(second_site_api)
  second_api_json = JSON.parse(second_api_results)

  first_api_json.each do |data|
    Image.add_image_data_to_database(
        data['field_1'], 
        data['field_3'],
        data['field_5']
        )
  end

end

基本上,我需要并想知道如何做,就是从第一个API中获得一些字段--从第一个API中得到一些字段,从第二个API中获取一些字段,并将它们放在一起,这样我就可以将它们全部添加到一个图像中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-14 04:43:39

您可以使用.keep_if从散列中获取项,因此您可以尝试:

代码语言:javascript
运行
复制
# My Image Model
class Image < ActiveRecord::Base

  private

    def self.add_image_data_to_database(object, hash)
      object.create(hash)
    end
end

## My Images Controller
class ImagesController < ApplicationController

  first_site_api = "api.website-1.com"
  first_api_results = HTTParty.get(first_site_api)

  hash = JSON.parse(first_api_results)
           .keep_if{|k, _v| [ 'field_1', 'field_3', 'field_5'].include?(k)}


  second_site_api = "api.website-2.com"
  second_api_results = HTTParty.get(second_site_api)

  hash.merge( JSON.parse(second_api_results)
    .keep_if{|k, _v| ['field_2', 'field_4'].include?(k) }
  )

  Image.add_image_data_to_database(hash)
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52797789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档