2. ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΎΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² (Rate Limits)
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΎΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² (rate limiting) Π² ΠΡΠ±Π»ΠΈΡΠ½ΠΎΠΌ API GitVerse. ΠΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΠΎΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ API Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
ΠΠ±ΡΠ΅Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
Π ΡΠ΅Π»ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ API GitVerse ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π»ΠΈΠΌΠΈΡ Π½Π° Π·Π°ΠΏΡΠΎΡΡ ΠΎΡ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (ΠΏΠΎ ID ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ).
ΠΠΈΠΌΠΈΡ ΠΏΠΎ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (ΠΏΠΎ ID)
ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ Π·Π°ΠΏΡΠΎΡΠ°ΠΌ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ ΡΠΎΠΊΠ΅Π½ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Authorization.
- Π»ΠΈΠΌΠΈΡ β 2000 Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΡΠ°Ρ;
- ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» β 1 ΡΠ°Ρ (3600 ΡΠ΅ΠΊΡΠ½Π΄);
- ΡΠ±ΡΠΎΡ β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Ρ.
β οΈ ΠΡΠΈ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΠΈ Π»ΠΈΠΌΠΈΡΠ° Π²ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΎΡ ΡΡΠΎΠ³ΠΎ ID Π±ΡΠ΄ΡΡ ΠΎΡΠΊΠ»ΠΎΠ½ΡΡΡΡΡ Π΄ΠΎ ΡΠ±ΡΠΎΡΠ° ΡΡΠ΅ΡΡΠΈΠΊΠ°.
ΠΡΠ»ΠΈ Π»ΠΈΠΌΠΈΡ ΠΏΡΠ΅Π²ΡΡΠ΅Π½, API Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠ²Π΅Ρ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ 429 Too Many Requests.
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π² ΠΎΡΠ²Π΅ΡΠ΅
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΡΠ²Π΅Ρ API (ΡΡΠΏΠ΅ΡΠ½ΡΠΉ ΠΈΠ»ΠΈ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ) ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΈΠΌΠΈΡΠΎΠ²:
| ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
GitVerse-RateLimit-Limit | ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΡ
Π·Π° ΡΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 2000) |
GitVerse-RateLimit-User-Remaining | ΠΡΡΠ°Π²ΡΠ΅Π΅ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π΄ΠΎ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ Π»ΠΈΠΌΠΈΡΠ° |
GitVerse-RateLimit-Retry-After | ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ Π·Π°ΠΏΡΠΎΡ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΡ Π»ΠΈΠΌΠΈΡΠ° |
Gitverse-Ratelimit-Reset | ΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠ΅ΡΠΊΠ° Unix (Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ ), ΠΊΠΎΠ³Π΄Π° Π»ΠΈΠΌΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠ±ΡΠΎΡΠ΅Π½ |
Retry-After | Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π΄ΡΠ±Π»ΠΈΡΡΡΡΠΈΠΉ GitVerse-RateLimit-Retry-After |
ΠΡΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ°ΡΡΠΎΡΠΎΠΉ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΎΡΠ²Π΅ΡΠΎΠ²
Π£ΡΠΏΠ΅ΡΠ½ΡΠΉ Π·Π°ΠΏΡΠΎΡ
HTTP/1.1 200 OK
Date: Tue, 12 Aug 2025 17:00:00 GMT
Content-Type: application/json; charset=utf-8
GitVerse-RateLimit-Limit: 2000
GitVerse-RateLimit-User-Remaining: 1999
Vary: Origin
Cache-Control: max-age=0, private, must-revalidate, no-transformΠΡΠ΅Π²ΡΡΠ΅Π½ΠΈΠ΅ ID-Π»ΠΈΠΌΠΈΡΠ°
HTTP/1.1 429 Too Many Requests
Date: Tue, 12 Aug 2025 17:00:00 GMT
Content-Type: application/json; charset=utf-8
GitVerse-RateLimit-Limit: 2000
GitVerse-RateLimit-User-Remaining: 0
GitVerse-RateLimit-Retry-After: 2253
Gitverse-Ratelimit-Reset: 1754917200
Retry-After: 2253
Vary: Origin
Cache-Control: max-age=0, private, must-revalidate, no-transformΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΡΡΠ΅ΡΠΏΠ°Π» Π»ΠΈΠΌΠΈΡ Π² 2000 Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΠΎΠ²ΡΠΎΡΠΈΡΡ Π·Π°ΠΏΡΠΎΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠ΅Π· 2253 ΡΠ΅ΠΊΡΠ½Π΄Ρ (~37.5 ΠΌΠΈΠ½ΡΡ).
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ
- ΠΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ
429, ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΊΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π²Retry-AfterΠ²ΡΠ΅ΠΌΡ. - ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎΠ±Ρ ΡΠ½ΠΈΠ·ΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ².
ΠΡΠ»Π°Π΄ΠΊΠ° ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³
ΠΠ»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π»ΠΈΠΌΠΈΡΠΎΠ²:
- ΡΠ»Π΅Π΄ΠΈΡΠ΅ Π·Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ
GitVerse-RateLimit-User-Remainingβ ΠΎΠ½ΠΎ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠΌ; - ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
Gitverse-Ratelimit-ResetΠ΄Π»Ρ ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ±ΡΠΎΡΠ° (Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Unix timestamp).