Retry-After a opakovanie pri 429
Balík rozkladá odchádzajúce požiadavky proaktívne. Ak chcete reagovať aj na signály servera, použite ->adaptive() alebo middleware spojte s ->retry() od Laravelu a metódou RateLimits::retryAfter(), ktorá rešpektuje odpoveď 429 Too Many Requests / Retry-After:
use RoundlyConsulting\HttpClientRateLimits\Facades\RateLimits;
Http::rateLimit(RateLimits::perMinute(60))
->retry(3, throw: false, sleepMilliseconds: fn ($attempt, $exception) =>
(RateLimits::retryAfter($exception) ?? $attempt) * 1000)
->get('https://api.example.com/things');Vlastné čítanie Retry-After
RateLimits::retryAfter() prijíma Response alebo RequestException, spracuje obe formy hlavičky (počet sekúnd aj HTTP dátum; dátum v minulosti dá 0), výsledok obmedzí na jeden deň (86 400 s) a vráti null, ak hlavička chýba alebo sa nedá prečítať:
use RoundlyConsulting\HttpClientRateLimits\Facades\RateLimits;
$response = Http::get('https://api.example.com/things');
if ($response->status() === 429) {
$seconds = RateLimits::retryAfter($response); // ?int: "120" or an HTTP-date, null when absent
}Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.