{"id":65102,"date":"2023-08-21T14:22:45","date_gmt":"2023-08-21T13:22:45","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=65102&#038;preview=true&#038;preview_id=65102"},"modified":"2023-08-29T14:13:57","modified_gmt":"2023-08-29T13:13:57","slug":"laravel-throttle","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/","title":{"rendered":"Wie man einer API in einer Laravel-Anwendung eine Ratenbegrenzung hinzuf\u00fcgt"},"content":{"rendered":"<p>Die Ratenbegrenzung ist entscheidend f\u00fcr den Schutz von Anwendungs- oder Website-Ressourcen vor \u00fcberm\u00e4\u00dfiger oder unsachgem\u00e4\u00dfer Nutzung. Ob durch b\u00f6swillige menschliche Eingriffe, Bot-basierte Angriffe oder eine \u00fcbersehene Schwachstelle &#8211; der Missbrauch von Ressourcen kann den rechtm\u00e4\u00dfigen Zugriff auf deine Anwendung beeintr\u00e4chtigen und schwerwiegende Schwachstellen verursachen.<\/p>\n<p>In diesem Artikel erf\u00e4hrst du, wie du einer API in einer Laravel-Anwendung eine Ratenbegrenzung hinzuf\u00fcgen kannst.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Drossele deinen API-Verkehr in Laravel<\/h2>\n<p>Die Ratenbegrenzung ist ein Mechanismus, der die Ausbeutung der Ressourcen deiner Anwendung eind\u00e4mmen soll. Es gibt viele Einsatzm\u00f6glichkeiten, aber besonders n\u00fctzlich ist es f\u00fcr \u00f6ffentliche APIs in gro\u00dfen, skalierbaren Systemen. Sie stellt sicher, dass alle legitimen Nutzer\/innen einen fairen Zugang zu den Systemressourcen erhalten.<\/p>\n<p>Die Ratenbegrenzung ist auch wichtig f\u00fcr die Sicherheit, die Kostenkontrolle und die allgemeine Systemstabilit\u00e4t. Sie kann dazu beitragen, anfragebasierte Angriffe wie verteilte Denial-of-Service-Angriffe (DDoS) zu verhindern. Bei diesem Angriff werden wiederholte Anfragen gesendet, um den Zugang zu einem Anwendungs- oder Webserver zu \u00fcberlasten und zu st\u00f6ren.<\/p>\n<p>Es gibt mehrere Methoden, um die Ratenbegrenzung zu implementieren. Du kannst Variablen verwenden, die den Anfragenden charakterisieren, um zu bestimmen, wer auf deine Anwendung zugreifen darf und wie h\u00e4ufig. Einige g\u00e4ngige Variablen sind:<\/p>\n<ul>\n<li><strong>IP-Adresse<\/strong> &#8211; Durch die Implementierung von Ratenbeschr\u00e4nkungen auf Basis von IP-Adressen kannst du die Anzahl der Anfragen pro Adresse begrenzen. Diese Methode ist besonders dann von Vorteil, wenn Nutzer\/innen auf eine Anwendung zugreifen k\u00f6nnen, ohne ihre Anmeldedaten anzugeben.<\/li>\n<li><strong>API-Schl\u00fcssel<\/strong> &#8211; Wenn du den Zugriff \u00fcber API-Schl\u00fcssel beschr\u00e4nkst, erh\u00e4ltst du vom Anfragenden vorgenerierte API-Schl\u00fcssel und legst Ratenbeschr\u00e4nkungen f\u00fcr jeden Schl\u00fcssel fest. Bei diesem Ansatz kannst du auch verschiedene Zugriffsstufen auf die generierten API-Schl\u00fcssel anwenden.<\/li>\n<li><strong>Kunden-ID<\/strong> &#8211; Du kannst auch eine Kunden-ID vorgenerieren, die ein Nutzer in die Kopfzeile oder den Text der API-Anfrage einf\u00fcgen kann. Mit dieser Methode kannst du Zugriffsstufen pro ID festlegen, um sicherzustellen, dass kein Client die Systemressourcen monopolisieren kann.<\/li>\n<\/ul>\n<h3>Laravel Middleware<\/h3>\n<p>Middleware ist ein praktischer Mechanismus zur \u00dcberpr\u00fcfung und Filterung von <a href=\"https:\/\/kinsta.com\/de\/blog\/javascript-http-anfrage\/\">HTTP-Anfragen<\/a>, die in eine Anwendung eingehen. Im Wesentlichen handelt es sich dabei um eine Codeschicht zwischen der Anwendung und der zugrunde liegenden Infrastruktur, die die Kommunikation zwischen den Ressourcen erm\u00f6glicht.<\/p>\n<h2>Wie man Ratenbegrenzungen implementiert<\/h2>\n<p>In diesem Lernprogramm wird eine bestehende Mini-Bibliotheks-API des Laravel 10-Frameworks verwendet, um die Verwendung von Laravel Throttle zu demonstrieren. Das Beispielprojekt enth\u00e4lt die grundlegenden CRUD-Implementierungen (Create, Read, Update und Delete), die f\u00fcr die Verwaltung von B\u00fcchern in einer Sammlung ben\u00f6tigt werden, sowie zwei zus\u00e4tzliche Routen, um einige Konzepte zur Ratenbegrenzung zu demonstrieren.<\/p>\n<h3>Voraussetzungen<\/h3>\n<p>Das Tutorial setzt voraus, dass du mit den Grundlagen der API-Entwicklung in Laravel vertraut bist. Vergewissere dich, dass du \u00fcber die folgenden Voraussetzungen verf\u00fcgst:<\/p>\n<ul>\n<li>PHP 8.2, <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Composer<\/a> und <a href=\"https:\/\/laravel.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel<\/a> sind auf deinem lokalen Rechner installiert und konfiguriert<\/li>\n<li>Ein aktives <a href=\"https:\/\/kinsta.com\/de\/anmelden\/\">Kinsta<\/a>-Konto<\/li>\n<li>Ein Konto auf <a href=\"https:\/\/github.com\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub<\/a>, <a href=\"https:\/\/gitlab.com\" target=\"_blank\" rel=\"noopener noreferrer\">GitLab<\/a> oder <a href=\"https:\/\/bitbucket.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bitbucket<\/a>, um deinen Code zu pushen<\/li>\n<\/ul>\n<p>Du verwendest auch <a href=\"https:\/\/my.kinsta.com?lang=de\">MyKinsta<\/a>, um diese API einzurichten und bereitzustellen. Du kannst dich an der mitgelieferten <a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-library-api-template\" target=\"_blank\" rel=\"noopener noreferrer\">Projektvorlage<\/a> orientieren und dir das Endergebnis anhand des <a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-library-api\" target=\"_blank\" rel=\"noopener noreferrer\">vollst\u00e4ndigen Quellcodes<\/a> ansehen.<\/p>\n<h2>Laravel-Anwendung einrichten<\/h2>\n<ol start=\"1\">\n<li>Um zu beginnen, klone die <a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-library-api-template\" target=\"_blank\" rel=\"noopener noreferrer\">Projektvorlage<\/a>.<\/li>\n<li>Dann erstellst du eine <strong>.env-Datei<\/strong> im Stammverzeichnis des Projekts und kopierst den Inhalt von <strong>.env.example<\/strong> in diese Datei.<\/li>\n<li>Vervollst\u00e4ndige das Setup mit den folgenden Befehlen, um die Abh\u00e4ngigkeiten der Anwendung zu installieren und den Anwendungs-Schl\u00fcssel zu erzeugen.<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">composer install\nphp artisan key:generate<\/code><\/pre>\n<p>Wenn dieser Befehl den Anwendungs-Schl\u00fcssel nicht automatisch zu deiner <strong>.env<\/strong>-Datei hinzuf\u00fcgt, f\u00fchre <code>php artisan key:generate --show<\/code> aus, kopiere den generierten Schl\u00fcssel und f\u00fcge ihn als Wert f\u00fcr <code>APP_KEY<\/code> in deine <strong>.env<\/strong>-Datei ein.<\/p>\n<ol start=\"4\">\n<li>Sobald die Installation der Abh\u00e4ngigkeiten und die Generierung des App-Schl\u00fcssels abgeschlossen sind, startest du die Anwendung mit dem folgenden Befehl:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan serve<\/code><\/pre>\n<p>Dieser Befehl startet die Anwendung und macht sie \u00fcber den Browser unter <code>https:\/\/127.0.0.1:8000<\/code> zug\u00e4nglich.<\/p>\n<ol start=\"5\">\n<li>Besuche die URL und best\u00e4tige, dass die Laravel-Begr\u00fc\u00dfungsseite angezeigt wird:<\/li>\n<\/ol>\n<figure>\n<p><figure style=\"width: 1279px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-welcome-page.png\" alt=\"Auf der Laravel-Willkommensseite wird das Logo oben in der Mitte angezeigt. \" width=\"1279\" height=\"801\"><figcaption class=\"wp-caption-text\">Die Laravel-Willkommensseite<\/figcaption><\/figure><\/figure>\n<h2>Datenbank-Konfigurationen<\/h2>\n<p>Lass uns die Anwendungsdatenbank in <a href=\"https:\/\/my.kinsta.com\/login?lang=de\">MyKinsta<\/a> konfigurieren und einrichten.<\/p>\n<ol start=\"1\">\n<li>Navigiere zum Dashboard deines MyKinsta-Kontos und klicke auf die Schaltfl\u00e4che <strong>Dienst hinzuf\u00fcgen<\/strong>:<\/li>\n<\/ol>\n<figure>\n<p><figure style=\"width: 1582px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-mykinsta-services.png\" alt=\"Das obere Segment des MyKinsta-Dashboard-Tabs enth\u00e4lt eine obere Symbolleiste. \" width=\"1582\" height=\"476\"><figcaption class=\"wp-caption-text\">MyKinsta-Dashboard mit mehreren konfigurierten Diensten<\/figcaption><\/figure><\/figure>\n<ol start=\"2\">\n<li>Klicke in der Liste <strong>Dienst hinzuf\u00fcgen<\/strong> auf <strong>Datenbank<\/strong> und konfiguriere die Parameter, um deine Datenbankinstanz zu starten:<\/li>\n<\/ol>\n<figure>\n<p><figure style=\"width: 786px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-mykinsta-database.png\" alt=\"Das Modul \"Datenbank erstellen\" von Kinsta zeigt den ersten Abschnitt \"Grundlegende Informationen\" an.\" width=\"786\" height=\"1266\"><figcaption class=\"wp-caption-text\">MyKinsta-Datenbankkonfiguration<\/figcaption><\/figure><\/figure>\n<p>In diesem Tutorial wird MariaDB verwendet, aber du kannst jede der von Laravel unterst\u00fctzten Datenbankoptionen w\u00e4hlen, die Kinsta anbietet.<\/p>\n<ol start=\"3\">\n<li>Wenn du die Details deiner Datenbank eingegeben hast, klicke auf die Schaltfl\u00e4che <strong>Weiter<\/strong>, um den Vorgang abzuschlie\u00dfen.<\/li>\n<\/ol>\n<p>Datenbanken, die auf Kinsta bereitgestellt werden, haben interne und externe Verbindungsparameter. Du solltest interne Verbindungsparameter f\u00fcr Anwendungen verwenden, die innerhalb desselben Kinsta-Kontos gehostet werden, und externe Parameter f\u00fcr externe Verbindungen. Verwende daher die externen Datenbank-Anmeldedaten von Kinsta f\u00fcr deine Anwendung.<\/p>\n<ol start=\"4\">\n<li>Kopiere und aktualisiere die <strong>.env<\/strong>-Anmeldedaten der App-Datenbank mit den externen Anmeldedaten, wie im Screenshot unten gezeigt:<\/li>\n<\/ol>\n<figure>\n<p><figure style=\"width: 1590px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-mykinsta-database-settings.png\" alt=\"Das Kinsta-Dashboard zeigt den Abschnitt \"Grundlegende Details\" der neu erstellten Datenbank \"library-records\" an. Alle Informationen stimmen mit denen \u00fcberein, die im vorherigen Datenbank-Setup-Bild eingegeben wurden.\" width=\"1590\" height=\"1133\"><figcaption class=\"wp-caption-text\">Details zur Konfiguration der MyKinsta-Datenbank<\/figcaption><\/figure><\/figure>\n<pre><code class=\"language-env\">DB_CONNECTION=mysql\nDB_HOST=your_host_name\nDB_PORT=your_port\nDB_DATABASE=your_database_info\nDB_USERNAME=your_username\nDB_PASSWORD=your_password<\/code><\/pre>\n<ol start=\"5\">\n<li>Nachdem du die Zugangsdaten f\u00fcr die Datenbank eingegeben hast, teste die Verbindung, indem du die Datenbankmigration mit dem folgenden Befehl anwendest:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan migrate<\/code><\/pre>\n<p>Wenn alles ordnungsgem\u00e4\u00df funktioniert, solltest du eine \u00e4hnliche Antwort wie die unten abgebildete erhalten.<\/p>\n<figure>\n<p><figure style=\"width: 1999px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-terminal-database-migration.png\" alt=\"Die Terminalausgabe zeigt den Bash-Befehl \"php artisan migrate\" und seine Ausgabe an. Unmittelbar unter dem Befehl steht unter \"INFO\" \"Running migrations\". Darunter sind die vier Migrationen und ihre Status wie folgt aufgelistet:2014_10_12_000000_create_users_table...812ms DONE.2014 _10_12_100000_erstelle_passwort_zurueck_tokens_table...882ms DONE.2019_08_19_000000_erstelle_failed_jobs_table...942ms DONE.2019_12_14_000001_erstelle_personal_access_tokens_table...1.250ms DONE. Unten steht der Cursor auf einer leeren Befehlszeile, um weitere Eingaben zu erm\u00f6glichen.\" width=\"1999\" height=\"450\"><figcaption class=\"wp-caption-text\">Erfolgreiche Datenbankmigration auf einem Terminal<\/figcaption><\/figure><\/figure>\n<ol start=\"6\">\n<li>Als N\u00e4chstes verwendest du den folgenden Befehl, um die Anwendungsrouten aufzulisten und die bereits implementierten Routen zu sehen.<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan route:list<\/code><\/pre>\n<p>Du solltest jetzt die verf\u00fcgbaren API-Endpunkte sehen:<\/p>\n<figure><\/figure>\n<ol start=\"7\">\n<li>Starte die Anwendung und \u00fcberpr\u00fcfe, ob alles noch gut funktioniert. Du kannst diese Endpunkte \u00fcber das Terminal mit einem Tool wie <a href=\"https:\/\/www.postman.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Postman<\/a> oder CURL testen.<\/li>\n<\/ol>\n<h2>Wie man die Rate in einer Laravel-Anwendung begrenzt<\/h2>\n<p>F\u00fcr Laravel-Anwendungen gibt es verschiedene Techniken zur Ratenbegrenzung. Du kannst eine Reihe von <a href=\"https:\/\/kinsta.com\/de\/blog\/static-vs-dynamic-ip\/\">IP-Adressen<\/a> sperren oder eine zeitliche Begrenzung der Anfragen auf Basis der IP-Adresse oder der User_id eines Nutzers durchsetzen. Als N\u00e4chstes wendest du jede dieser Methoden an.<\/p>\n<ol start=\"1\">\n<li>Installiere das Paket Laravel Throttle mit dem folgenden Befehl:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">composer require \"graham-campbell\/throttle:^10.0\"<\/code><\/pre>\n<ol start=\"2\">\n<li>Du kannst auch zus\u00e4tzliche \u00c4nderungen an den Laravel Throttle-Konfigurationen vornehmen, indem du die Datei <code>vendor configurations<\/code> ver\u00f6ffentlichst:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan vendor:publish --provider=\"GrahamCampbellThrottleThrottleServiceProvider\"<\/code><\/pre>\n<h3>Wie man IP-Adressen blockiert<\/h3>\n<p>Eine Technik zur Ratenbegrenzung erm\u00f6glicht es dir, Anfragen von einer bestimmten Gruppe von IP-Adressen zu blockieren.<\/p>\n<ol start=\"1\">\n<li>Zun\u00e4chst erstellst du die notwendige Middleware:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan make:middleware RestrictMiddleware<\/code><\/pre>\n<ol start=\"2\">\n<li>\u00d6ffne als N\u00e4chstes die erstellte Middleware-Datei <strong>app\/Http\/Middleware\/RestrictMiddleware.php<\/strong> und ersetze den Code in der Funktion <code>handle<\/code> durch das folgende Snippet. Achte darauf, dass du <code>use App;<\/code> zur Liste der Importe am Anfang der Datei hinzuf\u00fcgst.<\/li>\n<\/ol>\n<pre><code class=\"language-php\">$restrictedIps = ['127.0.0.1', '102.129.158.0'];\nif(in_array($request-&gt;ip(), $restrictedIps)){\n  App::abort(403, 'Request forbidden');\n}\nreturn $next($request);<\/code><\/pre>\n<ol start=\"3\">\n<li>In der Datei <strong>app\/Http\/Kernel.php<\/strong> erstellst du einen Alias f\u00fcr diese Middleware-Anwendung, indem du das Array <code>middlewareAliases<\/code> wie folgt aktualisierst:\n<pre><code class=\"language-php\">protected $middlewareAliases = [\n. . .\n'custom.restrict' =&gt; AppHttpMiddlewareRestrictMiddleware::class,\n];<\/code><\/pre>\n<ol start=\"4\">\n<li>Dann wende diese Middleware auf die <code>\/restricted-route<\/code> in der Datei <strong>routes\/api.php<\/strong> wie folgt an und teste:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">Route::middleware(['custom.restrict'])-&gt;group(function () {\n  Route::get('\/restricted-route', [BookController::class, 'getBooks']);\n});<\/code><\/pre>\n<p>Wenn sie korrekt funktioniert, blockiert diese Middleware alle Anfragen von den IPs im Array <code> $restrictedIps<\/code>: <code>127.0.0.1<\/code> und <code>102.129.158.0<\/code>. Anfragen von diesen IPs geben eine <strong>403 Forbidden<\/strong>-Antwort zur\u00fcck, wie unten gezeigt:<\/p>\n<figure>\n<p><figure style=\"width: 1136px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-postman-returns-403.png\" alt=\"Die Postman-Anwendung gibt eine \"403 Request Forbidden\"-Antwort auf eine GET-Anfrage an die URL\" width=\"1136\" height=\"807\"><figcaption class=\"wp-caption-text\">Eine 403 Forbidden Antwort f\u00fcr den \/restricted-route GET Endpunkt auf Postman<\/figcaption><\/figure><\/figure>\n<h3>Wie man Anfragen nach IP-Adresse drosselt<\/h3>\n<p>Als N\u00e4chstes schr\u00e4nkst du die Anfragen anhand der IP-Adresse des Nutzers ein.<\/p>\n<ol start=\"1\">\n<li>Wende die Throttle-Middleware auf die Routen <code>GET<\/code> und <code>PATCH<\/code> des Endpunkts <code>\/book<\/code> in <strong>routes\/api.php<\/strong> an:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">Route::middleware(['throttle:minute'])-&gt;group(function () {\n  Route::get('\/book', [BookController::class, 'getBooks']);\n});\n\nRoute::middleware(['throttle:5,1'])-&gt;group(function () {\n  Route::patch('\/book', [BookController::class, 'updateBook']);\n});<\/code><\/pre>\n<ol start=\"2\">\n<li>Du musst auch die Funktion <code>configureRateLimiting<\/code> in der Datei <strong>app\/Providers\/RouteServiceProvider<\/strong> mit der Middleware aktualisieren, die du zu den oben genannten Routen hinzugef\u00fcgt hast.<\/li>\n<\/ol>\n<pre><code class=\"language-php\">\u2026 \nRateLimiter::for('minute', function (Request $request) {\n  return Limit::perMinute(5)-&gt;by($request-&gt;ip());\n});<\/code><\/pre>\n<p>Diese Konfiguration begrenzt die Anfragen an den Endpunkt <code>\/book GET<\/code> auf 5 pro Minute, wie unten dargestellt.<\/p>\n<figure>\n<p><figure style=\"width: 1142px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-postman-returns-429.png\" alt=\"Die Postman-Anwendung gibt eine \"429 Too Many Requests\"-Antwort auf eine GET-Anfrage an die URL \" width=\"1142\" height=\"805\"><figcaption class=\"wp-caption-text\">Eine &#8222;429 Too Many Requests&#8220;-Antwort f\u00fcr den \/book GET-Endpunkt auf Postman<\/figcaption><\/figure><\/figure>\n<h3>Drosselung auf Basis von Benutzer-ID und Sitzungen<\/h3>\n<ol start=\"1\">\n<li>Um die Raten mithilfe der Parameter <code>user_id<\/code> und <code>session<\/code> zu begrenzen, aktualisiere die Funktion <code>configureRateLimiting<\/code> in der Datei <strong>app\/Providers\/RouteServiceProvider<\/strong> mit den folgenden zus\u00e4tzlichen Begrenzern und Variablen:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">...\nRateLimiter::for('user', function (Request $request) {\n  return Limit::perMinute(10)-&gt;by($request-&gt;user()?-&gt;id ?: $request-&gt;ip());\n});\nRateLimiter::for('session', function (Request $request) {\n  return Limit::perMinute(15)-&gt;by($request-&gt;session()-&gt;get('key') ?: $request-&gt;ip());\n});<\/code><\/pre>\n<ol start=\"2\">\n<li>Wende diesen Code auf die Routen <code>\/book\/{id} GET<\/code> und <code>\/book POST<\/code> in der Datei <code>routes\/api.php<\/code> an:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">Route::middleware(['throttle:user'])-&gt;group(function () {\n  Route::get('\/book\/{id}', [BookController::class, 'getBook']);\n});\nRoute::middleware(['throttle:session'])-&gt;group(function () {\n  Route::post('\/book', [BookController::class, 'createBook']);\n});<\/code><\/pre>\n<p>Dieser Code begrenzt die Anfragen mit <code>user_id<\/code> bzw. <code>session<\/code>.<\/p>\n<h3>Zus\u00e4tzliche Methoden in Throttle<\/h3>\n<p>Laravel Throttle bietet mehrere <a href=\"https:\/\/github.com\/GrahamCampbell\/Laravel-Throttle#usage\" target=\"_blank\" rel=\"noopener noreferrer\">zus\u00e4tzliche Methoden<\/a>, mit denen du deine Implementierung der Ratenbegrenzung besser kontrollieren kannst. Zu diesen Methoden geh\u00f6ren:<\/p>\n<ul>\n<li><code>attempt<\/code> &#8211; Ruft den Endpunkt auf, erh\u00f6ht die Trefferzahl und gibt einen booleschen Wert zur\u00fcck, der angibt, ob die konfigurierte Treffergrenze \u00fcberschritten wurde.<\/li>\n<li><code>hit<\/code> &#8211; Trifft die Drossel, erh\u00f6ht die Trefferzahl und gibt <code>$this<\/code> zur\u00fcck, um einen weiteren (optionalen) Methodenaufruf zu erm\u00f6glichen.<\/li>\n<li><code>clear<\/code> &#8211; Setzt den Throttle-Z\u00e4hler auf Null zur\u00fcck und gibt <code>$this<\/code> zur\u00fcck, damit du auf Wunsch einen weiteren Methodenaufruf machen kannst.<\/li>\n<li><code>count<\/code> &#8211; Gibt die Gesamtzahl der Treffer f\u00fcr die Drossel zur\u00fcck.<\/li>\n<li><code>check<\/code> &#8211; Gibt einen booleschen Wert zur\u00fcck, der angibt, ob das Throttle-Trefferlimit \u00fcberschritten wurde.<\/li>\n<\/ul>\n<ol start=\"1\">\n<li>Um die Ratenbegrenzung mit diesen Methoden zu testen, erstelle eine Middleware-Anwendung namens CustomMiddleware mit dem folgenden Befehl:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan make:middleware CustomMiddleware<\/code><\/pre>\n<ol start=\"2\">\n<li>F\u00fcge dann die folgenden Importdateien zu der neu erstellten Middleware-Datei in <strong>app\/Http\/Middleware\/CustomMiddleware.php<\/strong> hinzu:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">use GrahamCampbellThrottleFacadesThrottle;\nuse App;<\/code><\/pre>\n<ol start=\"3\">\n<li>Ersetze als N\u00e4chstes den Inhalt der Methode <code>handle<\/code> durch den folgenden Codeschnipsel:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">$throttler = Throttle::get($request, 5, 1);\nThrottle::attempt($request);\nif(!$throttler-&gt;check()){\n  App::abort(429, 'Too many requests');\n}\nreturn $next($request);<\/code><\/pre>\n<ol start=\"4\">\n<li>In der Datei <strong>app\/Http\/Kernel.php<\/strong> erstellst du einen Alias f\u00fcr diese Middleware-Anwendung, indem du das Array <code>middlewareAliases<\/code> wie folgt aktualisierst.<\/li>\n<\/ol>\n<pre><code class=\"language-php\">protected $middlewareAliases = [\n. . .\n'custom.throttle' =&gt; AppHttpMiddlewareCustomMiddleware::class, \n];<\/code><\/pre>\n<ol start=\"5\">\n<li>Dann wendest du diese Middleware auf die <code>\/custom-route<\/code> in der Datei <strong>routes\/api.php<\/strong> an:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">Route::middleware(['custom.throttle'])-&gt;group(function () {\n  Route::get('\/custom-route', [BookController::class, 'getBooks']);\n});<\/code><\/pre>\n<p>Die soeben implementierte benutzerdefinierte Middleware pr\u00fcft, ob das Throttle-Limit \u00fcberschritten wurde, indem sie die <code>check<\/code> method. If the limit is exceeded, it responds with a 429 error. Otherwise, it allows the request to continue.<\/p>\n<h2>Wie du die Anwendung auf dem Kinsta-Server bereitstellst<\/h2>\n<p>Nachdem du nun erfahren hast, wie du eine Ratenbegrenzung in einer Laravel-Anwendung implementieren kannst, musst du die Anwendung auf dem Kinsta-Server bereitstellen, damit sie weltweit zug\u00e4nglich ist.<\/p>\n<ol start=\"1\">\n<li>Beginne damit, den aktualisierten Code auf <a href=\"https:\/\/kinsta.com\/de\/blog\/gitlab-vs-github\/\">GitHub, GitLab<\/a> oder <a href=\"https:\/\/kinsta.com\/de\/blog\/bitbucket-vs-github\/\">Bitbucket<\/a> hochzuladen.<\/li>\n<li>Klicke in deinem Kinsta-Dashboard auf die Schaltfl\u00e4che <strong>Dienst hinzuf\u00fcgen<\/strong> und w\u00e4hle <strong>Anwendung<\/strong> aus der Liste aus. Verbinde dein Git-Konto mit deinem Kinsta-Konto und w\u00e4hle das richtige Repository f\u00fcr die Bereitstellung aus.<\/li>\n<li>Unter <strong>Grundlegende Details<\/strong> gibst du der Anwendung einen Namen und w\u00e4hlst dein bevorzugtes Rechenzentrum aus. Vergewissere dich au\u00dferdem, dass du die notwendigen Umgebungsvariablen f\u00fcr die Anwendung hinzugef\u00fcgt hast. Diese entsprechen den Variablen in deiner lokalen <strong>.env<\/strong>-Datei: die <code>APP_KEY<\/code> und die Datenbank-Konfigurationsvariablen.<\/li>\n<\/ol>\n<figure>\n<p><figure style=\"width: 790px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-mykinsta-app-details.png\" alt=\"Der Abschnitt \"Anwendungsdetails\" des Kinsta-Moduls \"Anwendung hinzuf\u00fcgen\". \" width=\"790\" height=\"1262\"><figcaption class=\"wp-caption-text\">Details zur Anwendung auf MyKinsta<\/figcaption><\/figure><\/figure>\n<ol start=\"1\">\n<li>Klicke auf die Schaltfl\u00e4che <strong>Weiter<\/strong>, um die Build-Umgebungsvariablen auszuw\u00e4hlen. Du kannst die Standardwerte beibehalten, da Kinsta die notwendigen Parameter automatisch ausf\u00fcllt.<\/li>\n<li>Auf der Registerkarte <strong>Prozesse<\/strong> kannst du die Standardwerte beibehalten oder einen Namen f\u00fcr deinen Prozess eingeben. Auf dieser Registerkarte kannst du auch die Pod- und Instanzgr\u00f6\u00dfen ausw\u00e4hlen.<\/li>\n<li>Auf der Registerkarte <strong>Zahlung<\/strong> schlie\u00dflich siehst du eine Zusammenfassung deiner Auswahlen. F\u00fcge deine bevorzugte Zahlungsoption hinzu, um den Prozess abzuschlie\u00dfen.<\/li>\n<li>Wenn du fertig bist, klicke auf die Registerkarte <strong>Anwendungen<\/strong>, um eine Liste der bereitgestellten Anwendungen anzuzeigen.<\/li>\n<li>Klicke auf den Namen der Anwendung, um ihre Einsatzdetails anzuzeigen (siehe unten). Du kannst die URL der Anwendung verwenden, um sie aufzurufen.<\/li>\n<\/ol>\n<figure>\n<p><figure style=\"width: 1587px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-mykinsta-app-deployments.png\" alt=\"Auf der MyKinsta-Registerkarte \" Bereitstellungen\" werden Details zu den bereitgestellten Anwendungen angezeigt.\" width=\"1587\" height=\"836\"><figcaption class=\"wp-caption-text\">Bereitstellungsdetails auf dem MyKinsta Dashboard<\/figcaption><\/figure><\/figure>\n<h2>Wie du die Anwendung testest<\/h2>\n<ol start=\"1\">\n<li>Um die Anwendung lokal zu testen, verwende den Befehl <code>php artisan serve<\/code>.<\/li>\n<\/ol>\n<p>Dieser Befehl macht deinen Anwendungsbrowser unter <code>http:\/\/localhost:8000<\/code> zug\u00e4nglich. Du kannst die API-Endpunkte, f\u00fcr die du die Ratenbegrenzung implementiert hast, von hier aus testen, indem du die Ratenbegrenzungsfunktion wiederholt aufrufst.<\/p>\n<p>Der Kinsta-Server zeigt eine <strong>Access Forbidden<\/strong>-Antwort an, weil du keine Konfigurationsdetails hinzugef\u00fcgt hast, die Kinsta sagen, wie die Anwendung bedient werden soll. F\u00fcge diese Details jetzt hinzu.<\/p>\n<ol start=\"2\">\n<li>Erstelle eine Datei <code>.htaccess<\/code> im Hauptverzeichnis deiner Anwendung und f\u00fcge den folgenden Code in die Datei ein:<\/li>\n<\/ol>\n<pre><code class=\"language-apacheconf\"> &lt;IfModule mod_rewrite.c&gt;\n  RewriteEngine On\n  RewriteRule ^(.*)$ public\/$1 [L]\n&lt;\/IfModule&gt;<\/code><\/pre>\n<ol start=\"3\">\n<li>Pushe diese \u00c4nderungen auf GitHub und Kinsta setzt die \u00c4nderungen automatisch um.<\/li>\n<li>\u00d6ffne nun die Anwendung \u00fcber die angegebene URL und stelle sicher, dass du die Laravel-Begr\u00fc\u00dfungsseite siehst.<\/li>\n<\/ol>\n<p>Jetzt kannst du die API-Endpunkte, f\u00fcr die du die Ratenbegrenzung mit Postman implementiert hast, testen, indem du sie wiederholt aufrufst, bis du das konfigurierte Limit erreicht hast. Wenn du das Limit \u00fcberschreitest, erh\u00e4ltst du eine Antwort <strong>429 Too Many Requests<\/strong>.<\/p>\n<h2>Zusammenfassung<\/h2>\n<p>Die Integration von Ratenbegrenzungsfunktionen in eine Laravel-API hilft dabei, die Rate zu kontrollieren, mit der Nutzer die Ressourcen einer Anwendung verbrauchen. Die Ratenbegrenzung hilft dir, ein zuverl\u00e4ssiges Nutzererlebnis zu bieten, ohne dass es zu einer \u00dcber- oder Unterauslastung kommt. Au\u00dferdem wird so sichergestellt, dass die zugrunde liegende Infrastruktur der Anwendung funktional und effizient bleibt.<\/p>\n<p>Du kannst auch den Kinsta-Blog besuchen, um mehr \u00fcber andere spannende Konzepte zu <a href=\"https:\/\/kinsta.com\/de\/thema\/laravel\/\">Laravel<\/a> und anderen Webtechnologien zu erfahren. Die erschwinglichen und nahtlosen <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Hosting-Dienste<\/a> sind f\u00fcr deine Anwendung und die Bed\u00fcrfnisse deines Teams sehr zu empfehlen.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Die Ratenbegrenzung ist entscheidend f\u00fcr den Schutz von Anwendungs- oder Website-Ressourcen vor \u00fcberm\u00e4\u00dfiger oder unsachgem\u00e4\u00dfer Nutzung. Ob durch b\u00f6swillige menschliche Eingriffe, Bot-basierte Angriffe oder eine \u00fcbersehene &#8230;<\/p>\n","protected":false},"author":290,"featured_media":65103,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[925,958],"class_list":["post-65102","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Einer API in einer Laravel-Anwendung eine Ratenbegrenzung hinzuf\u00fcgt<\/title>\n<meta name=\"description\" content=\"Erfahre, wie du eine Ratenbegrenzung zu einer API in einer Laravel-Anwendung hinzuf\u00fcgst und die Ausnutzung der Ressourcen deiner Anwendung einschr\u00e4nkst.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wie man einer API in einer Laravel-Anwendung eine Ratenbegrenzung hinzuf\u00fcgt\" \/>\n<meta property=\"og:description\" content=\"Erfahre, wie du eine Ratenbegrenzung zu einer API in einer Laravel-Anwendung hinzuf\u00fcgst und die Ausnutzung der Ressourcen deiner Anwendung einschr\u00e4nkst.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-21T13:22:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-29T13:13:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-throttle-2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"3042\" \/>\n\t<meta property=\"og:image:height\" content=\"1521\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Marcia Ramos\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Erfahre, wie du eine Ratenbegrenzung zu einer API in einer Laravel-Anwendung hinzuf\u00fcgst und die Ausnutzung der Ressourcen deiner Anwendung einschr\u00e4nkst.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-throttle-2.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marcia Ramos\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"11\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/\"},\"author\":{\"name\":\"Marcia Ramos\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116\"},\"headline\":\"Wie man einer API in einer Laravel-Anwendung eine Ratenbegrenzung hinzuf\u00fcgt\",\"datePublished\":\"2023-08-21T13:22:45+00:00\",\"dateModified\":\"2023-08-29T13:13:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/\"},\"wordCount\":2060,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-throttle-2.jpg\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/\",\"name\":\"Einer API in einer Laravel-Anwendung eine Ratenbegrenzung hinzuf\u00fcgt\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-throttle-2.jpg\",\"datePublished\":\"2023-08-21T13:22:45+00:00\",\"dateModified\":\"2023-08-29T13:13:57+00:00\",\"description\":\"Erfahre, wie du eine Ratenbegrenzung zu einer API in einer Laravel-Anwendung hinzuf\u00fcgst und die Ausnutzung der Ressourcen deiner Anwendung einschr\u00e4nkst.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-throttle-2.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-throttle-2.jpg\",\"width\":3042,\"height\":1521},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/de\/thema\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Wie man einer API in einer Laravel-Anwendung eine Ratenbegrenzung hinzuf\u00fcgt\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/de\/#website\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116\",\"name\":\"Marcia Ramos\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0d680db24858fdf61a7e7ce3c1a160f5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0d680db24858fdf61a7e7ce3c1a160f5?s=96&d=mm&r=g\",\"caption\":\"Marcia Ramos\"},\"description\":\"I'm the Editorial Team Lead at Kinsta. I'm a open source enthusiast and I love coding. With more than 10 years of technical writing and editing for the tech industry, I love collaborating with people to create clear and concise pieces of content and improve workflows.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/marciadiasramos\/\"],\"honorificSuffix\":\"B.Sc.\",\"gender\":\"Female\",\"knowsLanguage\":[\"English\",\"Portuguese\"],\"jobTitle\":\"Editorial Team Lead\",\"worksFor\":\"Kinsta Inc.\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/author\/marciaramos\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Einer API in einer Laravel-Anwendung eine Ratenbegrenzung hinzuf\u00fcgt","description":"Erfahre, wie du eine Ratenbegrenzung zu einer API in einer Laravel-Anwendung hinzuf\u00fcgst und die Ausnutzung der Ressourcen deiner Anwendung einschr\u00e4nkst.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/","og_locale":"de_DE","og_type":"article","og_title":"Wie man einer API in einer Laravel-Anwendung eine Ratenbegrenzung hinzuf\u00fcgt","og_description":"Erfahre, wie du eine Ratenbegrenzung zu einer API in einer Laravel-Anwendung hinzuf\u00fcgst und die Ausnutzung der Ressourcen deiner Anwendung einschr\u00e4nkst.","og_url":"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2023-08-21T13:22:45+00:00","article_modified_time":"2023-08-29T13:13:57+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-throttle-2.jpg","type":"image\/jpeg"}],"author":"Marcia Ramos","twitter_card":"summary_large_image","twitter_description":"Erfahre, wie du eine Ratenbegrenzung zu einer API in einer Laravel-Anwendung hinzuf\u00fcgst und die Ausnutzung der Ressourcen deiner Anwendung einschr\u00e4nkst.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-throttle-2.jpg","twitter_creator":"@Kinsta_DE","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Marcia Ramos","Gesch\u00e4tzte Lesezeit":"11\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/"},"author":{"name":"Marcia Ramos","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116"},"headline":"Wie man einer API in einer Laravel-Anwendung eine Ratenbegrenzung hinzuf\u00fcgt","datePublished":"2023-08-21T13:22:45+00:00","dateModified":"2023-08-29T13:13:57+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/"},"wordCount":2060,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-throttle-2.jpg","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/","url":"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/","name":"Einer API in einer Laravel-Anwendung eine Ratenbegrenzung hinzuf\u00fcgt","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-throttle-2.jpg","datePublished":"2023-08-21T13:22:45+00:00","dateModified":"2023-08-29T13:13:57+00:00","description":"Erfahre, wie du eine Ratenbegrenzung zu einer API in einer Laravel-Anwendung hinzuf\u00fcgst und die Ausnutzung der Ressourcen deiner Anwendung einschr\u00e4nkst.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-throttle-2.jpg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-throttle-2.jpg","width":3042,"height":1521},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-throttle\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/de\/thema\/api\/"},{"@type":"ListItem","position":3,"name":"Wie man einer API in einer Laravel-Anwendung eine Ratenbegrenzung hinzuf\u00fcgt"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/de\/#website","url":"https:\/\/kinsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116","name":"Marcia Ramos","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0d680db24858fdf61a7e7ce3c1a160f5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0d680db24858fdf61a7e7ce3c1a160f5?s=96&d=mm&r=g","caption":"Marcia Ramos"},"description":"I'm the Editorial Team Lead at Kinsta. I'm a open source enthusiast and I love coding. With more than 10 years of technical writing and editing for the tech industry, I love collaborating with people to create clear and concise pieces of content and improve workflows.","sameAs":["https:\/\/www.linkedin.com\/in\/marciadiasramos\/"],"honorificSuffix":"B.Sc.","gender":"Female","knowsLanguage":["English","Portuguese"],"jobTitle":"Editorial Team Lead","worksFor":"Kinsta Inc.","url":"https:\/\/kinsta.com\/de\/blog\/author\/marciaramos\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/65102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/users\/290"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/comments?post=65102"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/65102\/revisions"}],"predecessor-version":[{"id":65308,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/65102\/revisions\/65308"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65102\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65102\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65102\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65102\/translations\/fr"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65102\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65102\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65102\/translations\/es"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65102\/translations\/de"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/65102\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/65103"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=65102"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=65102"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=65102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}