2016-08-19 7 views
1

GitHub APIまたは外部サービスを使用してGitHubで寄稿者をすべて取得する方法はありますか?GitHub APIで特定の組織の貢献者のリストを取得する方法

GitHub APIを使用してangular組織からすべての寄稿者を取得しようとしています。

私が見つけた唯一の解決策:この要求により、そのすべての貢献者を取得し、各レポのために

GET https://api.github.com/orgs/angular/repos 
    1. はこの要求を使用してangular組織からすべてのリポジトリを取得

      GET https://api.github.com/repos/angular/:repo/contributors 
      
    2. すべての派生データを1つの配列にマージします。

    私はこのソリューションが非常に面倒だと思います。私はこのように約300件のリクエストを送信しており、約20秒間処理しています(アプリケーションはすべてのリクエストが終了しなくなるまでフリーズします)。

    質問:

    1. このアプローチにはどんな選択肢がありますか?
    2. github登録アプリでこのような多くのリクエストを処理できますか?私は言いますが、これらの300件のリクエストは、アプリケーションが起動するたびに送信されます。
  • 答えて

    2

    この方法の代替手段はありますか?

    いいえ、これはもっと良いアプローチではありません。

    github登録アプリでこのような多くのリクエストを処理できますか?私は言いますが、これらの300件のリクエストは、アプリケーションが起動するたびに送信されます。

    プライマリとセカンダリのGitHub APIのレート制限を尊重している限り、問題はありません。

    https://developer.github.com/v3/#rate-limiting

    https://developer.github.com/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits

    主な制限は、ユーザーあたり1時間あたり5000の認証された要求を作成することができます。複数の同時リクエストを開始すると、セカンダリの制限が発生します(たとえば、数百秒のリクエストが1秒間に数秒以上送信されます)。だから、あなたが300の要求をする必要があるならば、あなたはうまくいくはずです。ちょうど同時性をダイヤルしてください。

    それは条件付きの要求を行うことができるように、アプリケーションはこの情報の一部をキャッシュされた場合はそれも良いだろう。

    https://developer.github.com/v3/#conditional-requests

    関連する問題