2014-12-06 13 views
10

Nếu tôi gõ lệnh sau:Github API v3 không hiển thị tất cả các kho sử dụng

$ curl https://api.github.com/users/KiCad/repos | grep full_name 

tôi hy vọng rằng nó sẽ trở lại tất cả các kho KiCad, nhưng nó sẽ trả về:

"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", 

Nếu bạn nhìn tại https://github.com/KiCad, bạn sẽ thấy, có nhiều kho lưu trữ hơn.

Có ai gặp sự cố này không? Làm thế nào để bạn giải quyết nó?

Trả lời

14

API GitHub sử dụng phân trang và mặc định là 30 mục mỗi trang. Bạn sẽ phải sử dụng

curl -i https://api.github.com/users/KiCad/repos?per_page=100 

100 là số lượng mặt hàng bạn có thể nhận được trên một trang duy nhất. Với -i được chỉ định, bạn sẽ thấy tiêu đề được in ra và tiêu đề bạn đang tìm kiếm là tiêu đề Links. Điều đó sẽ có các liên kết để giúp bạn điều hướng các trang. Một trong các liên kết này sẽ giống như

https://api.github.com/users/KiCad/repos?per_page=100&page=2 

Vì vậy, nếu bạn làm

curl -i https://api.github.com/users/KiCad/repos?per_page=100&page=2 

Bạn sẽ nhận được các hợp đồng mua 101-200. Bạn có thể tiếp tục điều này cho đến khi không có liên kết next trong tiêu đề Links hoặc cho đến khi bạn nhận ra mình đã nhận được ít hơn 100 kết quả.

+3

Câu trả lời này thật tuyệt vời và đây là liên kết đến tài liệu liên quan về phân trang để biết thêm chi tiết https://developer.github.com/v3/#pagination –

+0

Cảm ơn bạn đã sửa chữa @jasonrudolph đó –

Các vấn đề liên quan