Github API v3 не показывает все пользовательские репозитории
Если я наберу эту команду:
$ curl https://api.github.com/users/KiCad/repos | grep full_name
Я ожидаю, что он вернет все репозитории KiCad, но он вернет:
"full_name": "KiCad/Air_Coils_SML_NEOSID.pretty",
"full_name": "KiCad/Buzzers_Beepers.pretty",
"full_name": "KiCad/Capacitors_Elko_ThroughHole.pretty",
"full_name": "KiCad/Capacitors_SMD.pretty",
"full_name": "KiCad/Capacitors_Tantalum_SMD.pretty",
"full_name": "KiCad/Capacitors_ThroughHole.pretty",
"full_name": "KiCad/Choke_Axial_ThroughHole.pretty",
"full_name": "KiCad/Choke_Common-Mode_Wurth.pretty",
"full_name": "KiCad/Choke_Radial_ThroughHole.pretty",
"full_name": "KiCad/Choke_SMD.pretty",
"full_name": "KiCad/Choke_Toroid_ThroughHole.pretty",
"full_name": "KiCad/Connect.pretty",
"full_name": "KiCad/Connectors_Molex.pretty",
"full_name": "KiCad/Converters_DCDC_ACDC.pretty",
"full_name": "KiCad/Crystals.pretty",
"full_name": "KiCad/Crystals_Oscillators_SMD.pretty",
"full_name": "KiCad/Diodes_SMD.pretty",
"full_name": "KiCad/Diodes_ThroughHole.pretty",
"full_name": "KiCad/Discret.pretty",
"full_name": "KiCad/Display.pretty",
"full_name": "KiCad/Displays_7-Segment.pretty",
"full_name": "KiCad/Divers.pretty",
"full_name": "KiCad/EuroBoard_Outline.pretty",
"full_name": "KiCad/Fiducials.pretty",
"full_name": "KiCad/Filters_HF_Coils_NEOSID.pretty",
"full_name": "KiCad/Fuse_Holders_and_Fuses.pretty",
"full_name": "KiCad/Hall-Effect_Transducers_LEM.pretty",
"full_name": "KiCad/Heatsinks.pretty",
"full_name": "KiCad/Housings_DFN_QFN.pretty",
"full_name": "KiCad/Housings_QFP.pretty",
Если вы посмотрите https://github.com/KiCad, вы увидите, что есть больше репозиториев.
Кто-нибудь столкнулся с этой проблемой? Как вы его решаете?
Ответы
Ответ 1
API GitHub использует разбиение на страницы и по умолчанию - 30 элементов на страницу. Вы должны будете использовать
curl -i https://api.github.com/users/KiCad/repos?per_page=100
100 - это наибольшее количество элементов, которые вы можете получить на одной странице. С указанным -i
вы увидите распечатанные заголовки, а заголовок, который вы ищете, - это заголовок Links
. У этого будут ссылки, которые помогут вам перемещаться по страницам. Одна из этих ссылок должна выглядеть как
https://api.github.com/users/KiCad/repos?per_page=100&page=2
Итак, если вы делаете
curl -i https://api.github.com/users/KiCad/repos?per_page=100&page=2
Вы получите репозиции 101-200. Вы можете продолжить это до тех пор, пока в заголовке Links
не будет ссылки next
или пока вы не поймете, что получили менее 100 результатов.