ruby-on-rails - 在 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
解决方案
推荐阅读
- r - 在 R 中手动引入数据的森林图
- css - Bootstrap 4:字体样式的覆盖不起作用
- azure - 为什么在我有应用网关时使用 azure APIM
- javascript - 如何使用jquery动态附加带有大写字母的html标签?
- typescript - 如何推断 Vue 3 组件中的 props 类型?
- kivymd - ValueError: MDLabel._text 只接受 str
- c - 我们可以编写一个只包含库调用的程序吗
- php - 如果主值相同,则合并数组
- android - 为了避免盗版,在应用中添加“应用内计费”而不是在 Play 商店中将其作为付费应用发布会更好吗?
- clang - freebsd12不能用clang工具AddressSanitizer检查内存泄漏?