---
title: "Fasáda RateLimits — HTTP Client Rate Limits for Laravel | Roundly"
description: "Jediný vstupný bod na tvorbu limitov — továrenské metódy pre okná, profily, zložené limity, prepisy úložiska a deferrera, Retry-After, fake."
url: https://roundly-consulting.com/sk/open-source/navody/http-client-rate-limits-for-laravel/fasada-ratelimits
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[HTTP Client Rate Limits for Laravel](https://roundly-consulting.com/sk/open-source/navody/http-client-rate-limits-for-laravel.md)

# Fasáda RateLimits

Fasáda RateLimits je jediný vstupný bod balíka na tvorbu limitov. Načíta singleton RateLimitManager z kontajnera, takže nakonfigurované úložisko a deferrer — alebo RateLimits::fake() — platia pre každý limit vrátane tých, ktoré vytvorí Http::rateLimit():

```php
use Illuminate\Support\Facades\Http;
use RoundlyConsulting\HttpClientRateLimits\Facades\RateLimits;

// Build a limit and attach it to a request.
Http::rateLimit(RateLimits::perSecond(5)->by('acct-1'))->get('https://api.example.com/orders');

// Profiles and compound windows come from the same place.
$github = RateLimits::profile('github');
$api    = RateLimits::compound([RateLimits::perSecond(5), RateLimits::perMinute(100)]);

// Inspect or clear a budget without sending anything.
$limit = RateLimits::perMinute(30)->by('acct-1');
$limit->remaining();
$limit->reset();
```

## Kompletné rozhranie

```php
use RoundlyConsulting\HttpClientRateLimits\Facades\RateLimits;

RateLimits::make(Limit $limit);                  // from a Limit value object
RateLimits::perSecond(int $maxAttempts = 1);     // N requests per second
RateLimits::perMinute(int $maxAttempts = 1);     // N requests per minute
RateLimits::perHour(int $maxAttempts = 1);       // N requests per hour
RateLimits::perDay(int $maxAttempts = 1);        // N requests per day
RateLimits::profile(string $name);               // a named profile from config
RateLimits::compound(array $limits);             // several windows at once
RateLimits::usingStore(Store $store);            // a copy of the manager on this store
RateLimits::usingDeferrer(Deferrer $deferrer);   // … or with this deferrer
RateLimits::releasingJob(object $job);           // … releasing a queued job instead of sleeping
RateLimits::retryAfter(Response|RequestException $response); // ?int seconds from Retry-After
RateLimits::store();                             // the shared default store
RateLimits::deferrer();                          // the default deferrer
```

| Metóda | Vracia | Účel |
| --- | --- | --- |
| `make(Limit $limit)` | RateLimit | Vytvorí limit z hodnotového objektu Limit s úložiskom a deferrerom managera. |
| `perSecond / perMinute / perHour / perDay(int $maxAttempts = 1)` | RateLimit | N požiadaviek za okno. |
| `profile(string $name)` | RateLimit | Pomenovaný profil z konfigurácie limiters s kľúčom podľa by, inak podľa mena; neznáme meno vyhodí UnknownLimiterProfileException. |
| `compound(array $limits)` | RateLimit | Viac okien naraz; prvé je primárne, platí najprísnejšie. |
| `usingStore(Store $store)` | RateLimitManager | Kópia managera s týmto úložiskom; singleton zostane nedotknutý. |
| `usingDeferrer(Deferrer $deferrer)` | RateLimitManager | Kópia managera s týmto deferrerom. |
| `releasingJob(object $job)` | RateLimitManager | Kópia, ktorá namiesto čakania vráti úlohu do fronty (ReleaseDeferrer). |
| `retryAfter(Response\|RequestException $response)` | ?int | Počet sekúnd z hlavičky Retry-After (sekundy aj HTTP dátum); null, ak chýba alebo je nečitateľná. |
| `store()` | Store | Zdieľané úložisko, do ktorého nové limity zapisujú pokusy. |
| `deferrer()` | Deferrer | Deferrer, ktorým nové limity čakajú. |
| `fake()` | RateLimitsFake | Nahradí manager zaznamenávajúcim testovacím fake. |

## Čo limit dokáže

Každá továrenská metóda vráti RateLimit — Guzzle middleware, ktorý odovzdáte do Http::rateLimit() alebo Http::withMiddleware(), prípadne ním cez handle() obalíte ľubovoľné callable. Je fluentný a všetko, čo sám nedefinuje, presmeruje na podkladový Limit a potom na Limiter:

| Skupina | Metódy vráteného RateLimit |
| --- | --- |
| Nastavenie (fluentné) | `by(), alongside(), maxWait(), jitter(), adaptive(), setStore(), setDeferrer()` |
| Kontrola | `remaining(), availableIn(), tooManyAttempts(), delayUntilNextRequestInMs(), getKey(), getMaxAttempts(), getTimespan(), isOverMaxAttempts(), isUnderMaxAttempts(), getStore(), getDeferrer(), getLimiter()` |
| Vynulovanie | `reset()` |
| Spustenie | `handle(callable)` |

by() zmení kľúč všetkých okien, ktoré limit vynucuje; alongside() a compound() si odovzdané limity skopírujú, takže zmena kľúča výsledku ich nikdy neovplyvní.

## Prepisy pre jedno miesto volania

Úložisko alebo deferrer prepíšete pre jedno miesto v kóde bez zásahu do globálnych predvolieb:

```php
use RoundlyConsulting\HttpClientRateLimits\Deferrer\SleepDeferrer;
use RoundlyConsulting\HttpClientRateLimits\Facades\RateLimits;
use RoundlyConsulting\HttpClientRateLimits\Store\RedisStore;

// usingStore() / usingDeferrer() return a configured copy; the shared manager is untouched.
$limit = RateLimits::usingStore(new RedisStore('default'))
    ->usingDeferrer(new SleepDeferrer)
    ->perMinute(30);
```

Uprednostňujete explicitnú závislosť pred statickým volaním? Pozrite si DI a akcie — injektovaný manager má rovnaké API.

## 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 kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/http-client-rate-limits-for-laravel.md)
