首页 > 解决方案 > 在 Github api 查询中获取所有存储库

问题描述

我将以下查询连接到 rails 应用程序。即使每页数增加,它似乎一次只返回 30 个项目。但是,如果我通过浏览器发出相同的请求,我会得到预期的项目数量。

https://api.github.com/search/repositories?q=license:gpl+license:lgpl+license:gpl+license:mit+forks:0+stars:1..2000+pushed:%3E2019-12-11+language:ruby+language:javascript&per_page=100

控制器:

def request_projects
    api_key = Rails.application.credentials.dig(:github)
    query = "#{Project::LICENSES}+#{Project::FORKS}+#{Project::STARS}+#{Project::DATE}+#{Project::LANGUAGES}"
    uri = URI.parse("#{Project::GITHUB_BASE_URL}?q=#{query}&client_secret=#{api_key[:secret]}&per_page=100")
    res = Net::HTTP.get_response(uri)
    Project.create_from_request(res.body)
  end

模型:

def self.create_from_request(request_body)
    data = JSON.parse(request_body, symbolize_names: true)
    data[:items].each do |item|
      name = item[:name]
      owner = item[:owner][:login]
      url = item[:html_url]
      stars = item[:stargazers_count]

      Project.create(name: name, owner: owner, url: url, stars: stars) if !Project.exists?(name: name, owner: owner)
    end
  end

标签: ruby-on-railsrubyapigithubrepository

解决方案


推荐阅读