{"id":55127,"date":"2023-08-21T15:29:25","date_gmt":"2023-08-21T13:29:25","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=55127&#038;preview=true&#038;preview_id=55127"},"modified":"2023-08-31T12:25:44","modified_gmt":"2023-08-31T10:25:44","slug":"laravel-throttle","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/","title":{"rendered":"Zo voeg je rate limiting toe aan een API in een Laravel applicatie"},"content":{"rendered":"<p>Rate limiting is essentieel voor het beschermen van resources van apps of websites tegen overmatig of onjuist gebruik. Of dit nu het gevolg is van kwaadwillig menselijk ingrijpen, botgebaseerde aanvallen of een over het hoofd geziene kwetsbaarheid, misbruik van bronnen kan de legitieme toegang tot je applicatie verstoren en ernstige kwetsbaarheden introduceren.<\/p>\n<p>Dit artikel onderzoekt hoe je snelheidsbeperking kunt toevoegen aan een API in een Laravel applicatie.<\/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>Je API verkeer beperken in Laravel<\/h2>\n<p>Rate limiting is een mechanisme dat is ontworpen om het gebruik van de resources van je applicatie te beperken. Hoewel het veel toepassingen heeft, is het vooral nuttig voor openbare API&#8217;s in grote, schaalbare systemen. Het zorgt ervoor dat alle legitieme gebruikers eerlijke toegang behouden tot systeemresources.<\/p>\n<p>Rate limiting is bovendien cruciaal voor beveiliging, kostenbeheersing en algehele stabiliteit van het systeem. Het kan op verzoeken gebaseerde aanvallen helpen voorkomen, zoals DDoS aanvallen (Distributed Denial-of-Service). Dit soort aanval is gebaseerd op het verzenden van herhaalde verzoeken om de toegang tot een applicatie of website server te overweldigen en te verstoren.<\/p>\n<p>Er zijn verschillende methoden om rate limiting te implementeren. Je kunt variabelen gebruiken die de aanvrager karakteriseren om te bepalen wie toegang krijgt tot je applicatie en hoe vaak. Enkele veelgebruikte variabelen zijn:<\/p>\n<ul>\n<li><strong>IP adres<\/strong> &#8211; Door rate limits te implementeren op basis van IP adressen kun je het aantal aanvragen per adres beperken. Deze methode is vooral nuttig in omstandigheden waarin gebruikers toegang kunnen krijgen tot een applicatie zonder referenties op te geven.<\/li>\n<li><strong>API sleutel<\/strong> &#8211; Het beperken van toegang via API sleutels houdt in dat je de aanvrager voorziet van vooraf gegenereerde API sleutels en dat je per sleutel rate limits instelt. Met deze aanpak kun je ook verschillende toegangsniveaus toepassen op de gegenereerde API sleutels.<\/li>\n<li><strong>Client ID<\/strong> &#8211; Je kunt ook vooraf een Client ID genereren die een gebruiker kan invoegen in de header of body van API verzoeken. Met deze methode kun je toegangsniveaus per ID instellen om ervoor te zorgen dat geen enkele client systeembronnen kan monopoliseren.<\/li>\n<\/ul>\n<h3>Laravel Middleware<\/h3>\n<p>Middleware biedt een handig mechanisme voor het inspecteren en filteren van <a href=\"https:\/\/kinsta.com\/nl\/blog\/javascript-http-verzoek\/\">HTTP-verzoeken<\/a> die een applicatie binnenkomen. In wezen is het een laag code tussen de applicatie en de onderliggende infrastructuur om communicatie tussen de bronnen mogelijk te maken.<\/p>\n<h2>Zo implementeer je rate limits<\/h2>\n<p>Deze tutorial maakt gebruik van een bestaande mini-library API op het Laravel 10 framework om het gebruik van Laravel throttling te demonstreren. Het voorbeeld startproject bevat de basis create, read, update en delete (CRUD) implementaties die nodig zijn om booksin een collectie te beheren en twee extra routes om een aantal rate-limiting concepten te demonstreren.<\/p>\n<h3>Vereisten<\/h3>\n<p>De tutorial gaat ervan uit dat je bekend bent met de basisprincipes van API ontwikkeling in Laravel. Zorg ervoor dat je over het volgende beschikt:<\/p>\n<ul>\n<li>PHP 8.2, <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Composer<\/a> en <a href=\"https:\/\/laravel.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel<\/a> ge\u00efnstalleerd en geconfigureerd hebt op je lokale machine<\/li>\n<li>Een actief <a href=\"https:\/\/kinsta.com\/nl\/registreren\/\">Kinsta account<\/a><\/li>\n<li>Een account op <a href=\"https:\/\/github.com\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub<\/a>, <a href=\"https:\/\/gitlab.com\" target=\"_blank\" rel=\"noopener noreferrer\">GitLab<\/a> of <a href=\"https:\/\/bitbucket.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bitbucket<\/a> om je code te pushen<\/li>\n<\/ul>\n<p>Je gebruikt ook <a href=\"https:\/\/my.kinsta.com?lang=nl\">MyKinsta<\/a> om deze API in te stellen en te implementeren. Je kunt de meegeleverde <a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-library-api-template\" target=\"_blank\" rel=\"noopener noreferrer\">projecttemplates<\/a> volgen en een voorbeeld van het eindresultaat bekijken vanuit de <a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-library-api\" target=\"_blank\" rel=\"noopener noreferrer\">volledige sourcecode<\/a>.<\/p>\n<h2>Laravel applicatie opzetten<\/h2>\n<ol start=\"1\">\n<li>Om te beginnen kloon je de <a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-library-api-template\" target=\"_blank\" rel=\"noopener noreferrer\">projecttemplate<\/a>.<\/li>\n<li>Maak vervolgens een <strong>.env<\/strong> bestand aan in de hoofdmap van het project en kopieer de inhoud van <strong>.env.example<\/strong> hierin.<\/li>\n<li>Voltooi vervolgens de installatie met de volgende commando&#8217;s om de dependencies van de app te installeren en de app key te genereren.<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">composer install\nphp artisan key:generate<\/code><\/pre>\n<p>Als dit commando niet automatisch de app key aan je <strong>.env<\/strong> bestand toevoegt, voer dan <code>php artisan key:generate --show<\/code> uit, kopieer de gegenereerde sleutel en plak deze in je <strong>.env<\/strong> bestand als de waarde voor <code>APP_KEY<\/code>.<\/p>\n<ol start=\"4\">\n<li>Zodra de installatie van de dependencies en het genereren van de app-sleutel voltooid zijn, start je de applicatie met het volgende commando:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan serve<\/code><\/pre>\n<p>Dit commando start de applicatie en maakt deze toegankelijk via de browser op <code>https:\/\/127.0.0.1:8000<\/code>.<\/p>\n<ol start=\"5\">\n<li>Bezoek de URL om te bevestigen dat de Laravel welkomstpagina verschijnt:<\/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=\"Op de welkomstpagina van Laravel staat het logo middenboven. \" width=\"1279\" height=\"801\"><figcaption class=\"wp-caption-text\">Het Laravel welkomstscherm<\/figcaption><\/figure><\/figure>\n<h2>Configuratie database<\/h2>\n<p>Laten we de applicatiedatabase configureren en instellen in <a href=\"https:\/\/my.kinsta.com\/login?lang=nl\">MyKinsta<\/a>.<\/p>\n<ol start=\"1\">\n<li>Navigeer naar het dashboard van je MyKinsta account en klik op de knop <strong>Dienst toevoegen<\/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=\"Het bovenste segment van het tabblad MyKinsta Dashboard featuret een bovenste werkbalk. \" width=\"1582\" height=\"476\"><figcaption class=\"wp-caption-text\">MyKinsta dashboard met verschillende services geconfigureerd.<\/figcaption><\/figure><\/figure>\n<ol start=\"2\">\n<li>Klik in de lijst <strong>Dienst toevoegen<\/strong> op <strong>Database<\/strong> en configureer de parameters om je database-instantie te 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=\"De module \"Een database maken\" van Kinsta toont de eerste sectie, genaamd \"Basisgegevens\".\" width=\"786\" height=\"1266\"><figcaption class=\"wp-caption-text\">MyKinsta database configuratie.<\/figcaption><\/figure><\/figure>\n<p>Deze tutorial gebruikt MariaDB, maar je kunt elke door Laravel ondersteunde database kiezen die Kinsta biedt.<\/p>\n<ol start=\"3\">\n<li>Zodra je je databasegegevens hebt ingevoerd, klik je op de knop <strong>Doorgaan<\/strong> om het proces af te ronden.<\/li>\n<\/ol>\n<p>Databases die worden aangeboden op Kinsta hebben interne en externe verbindingsparameters. Je moet interne verbindingsparameters gebruiken voor applicaties die binnen hetzelfde Kinsta account worden gehost en externe parameters voor externe verbindingen. Gebruik daarom de externe databasegegevens van Kinsta voor je applicatie.<\/p>\n<ol start=\"4\">\n<li>Kopieer de <strong>.env<\/strong> referenties van de database van je app en werk ze bij met de externe referenties in de schermafbeelding hieronder:<\/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=\"Het Kinsta dashboard toont het gedeelte \"Basisgegevens\" van de nieuw aangemaakte database \" library-records\". Alle informatie komt overeen met de informatie die is ingevoerd in de vorige afbeelding voor het instellen van de database.\" width=\"1590\" height=\"1133\"><figcaption class=\"wp-caption-text\">MyKinsta database configuratie details.<\/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>Nadat je de databasegegevens hebt ingevuld, test je de verbinding door de databasemigratie toe te passen met het onderstaande commando:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan migrate<\/code><\/pre>\n<p>Als alles naar behoren werkt, zou je een respons moeten zien zoals hieronder.<\/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=\"De uitvoer van de terminal toont het Bash-commando \"php artisan migrate\" en de uitvoer daarvan.Direct onder het commando staat een \"INFO\"-label met de tekst \"Lopende migraties.\"Daaronder staan de vier migraties en hun statussen, als volgt opgesomd:2014_10_12_000000_create_users_table...812ms DONE.2014_10_12_100000_create_password_reset_tokens_table...882ms DONE.2019_08_19_000000_create_failed_jobs_table...942ms DONE.2019_12_14_000001_create_personal_access_tokens_table...1250ms DONE.Hieronder staat de cursor op een lege command line om extra invoer mogelijk te maken.\" width=\"1999\" height=\"450\"><figcaption class=\"wp-caption-text\">Succesvolle databasemigratie in een terminal.<\/figcaption><\/figure><\/figure>\n<ol start=\"6\">\n<li>Gebruik vervolgens het volgende commando om de applicatieroutes op te sommen en de reeds ge\u00efmplementeerde routes te bekijken.<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan route:list<\/code><\/pre>\n<p>Je zou nu de beschikbare API endpoints moeten zien:<\/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-api-endpoints.png\" alt=\"De terminal geeft de \"php artisan route\" weer:\" width=\"1999\" height=\"411\"><figcaption class=\"wp-caption-text\">De routelijst van de toepassing op de terminal.<\/figcaption><\/figure><\/figure>\n<ol start=\"7\">\n<li>Start de applicatie en controleer of alles nog steeds goed werkt. Je kunt deze endpoints via de terminal testen met een tool als <a href=\"https:\/\/www.postman.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Postman<\/a> of CURL.<\/li>\n<\/ol>\n<h2>Zo stel je een rate limit in een Laravel applicatie<\/h2>\n<p>Er zijn verschillende rate limit technieken beschikbaar voor Laravel applicaties. Je kunt een set <a href=\"https:\/\/kinsta.com\/nl\/blog\/statische-en-dynamische-ip\/\">IP adressen<\/a> blokkeren of op duur gebaseerde aanvraaglimieten afdwingen op basis van het IP adres of user_id van een gebruiker. Vervolgens pas je elk van deze methoden toe.<\/p>\n<ol start=\"1\">\n<li>Installeer het Laravel Throttle pakket met het volgende commando:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">composer require \"graham-campbell\/throttle:^10.0\"<\/code><\/pre>\n<ol start=\"2\">\n<li>Je kunt ook extra wijzigingen aanbrengen in de Laravel Throttle configuraties door het <code>vendor configurations<\/code> bestand te publiceren:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan vendor:publish --provider=\"GrahamCampbell\\Throttle\\ThrottleServiceProvider\"<\/code><\/pre>\n<h3>IP adressen blokkeren<\/h3>\n<p>Met deze techniek voor het beperken van de snelheid kun je verzoeken blokkeren van een bepaalde set IP adressen.<\/p>\n<ol start=\"1\">\n<li>Maak om te beginnen de benodigde middleware:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan make:middleware RestrictMiddleware<\/code><\/pre>\n<ol start=\"2\">\n<li>Open vervolgens het aangemaakte <strong>app\/Http\/Middleware\/RestrictMiddleware.php<\/strong> middleware-bestand en vervang de code in de functie <code>handle<\/code> door het onderstaande fragment. Zorg ervoor dat je <code>use App;<\/code> toevoegt aan de lijst met imports bovenaan het bestand.<\/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>Maak in het bestand <strong>app\/Http\/Kernel.php<\/strong> een alias aan voor deze middleware-app door de array <code>middlewareAliases<\/code> als volgt aan te passen:\n<pre><code class=\"language-php\">protected $middlewareAliases = [\n. . .\n'custom.restrict' =&gt; \\App\\Http\\Middleware\\RestrictMiddleware::class,\n];<\/code><\/pre>\n<ol start=\"4\">\n<li>Pas deze middleware vervolgens als volgt toe op de <code>\/restricted-route<\/code> in het bestand <strong>routes\/api.php<\/strong> en test:<\/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>Als het goed werkt, blokkeert deze middleware alle verzoeken van de IP&#8217;s in de <code> $restrictedIps<\/code> array: <code>127.0.0.1<\/code> en <code>102.129.158.0<\/code>. Verzoeken van deze IP&#8217;s geven een <strong>403 Forbidden<\/strong> respons, zoals hieronder te zien is:<\/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=\"De Postman-app stuurt een \"403 Request Forbidden\" respons terug op een GET-verzoek naar de URL\" width=\"1136\" height=\"807\"><figcaption class=\"wp-caption-text\">Een 403 Forbidden respons voor het \/restricted-route GET endpoint op Postman<\/figcaption><\/figure><\/figure>\n<h3>Zo beperk je verzoeken op IP adres<\/h3>\n<p>Ook kun je verzoeken beperken op basis van het IP adres van de gebruiker.<\/p>\n<ol start=\"1\">\n<li>Pas de Throttle middleware toe op de routes <code>GET<\/code> en <code>PATCH<\/code> van het <code>\/book<\/code> endpoint in <strong>routes\/api.php<\/strong>:<\/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>Je moet ook de functie <code>configureRateLimiting<\/code> in het bestand <strong>app\/Providers\/RouteServiceProvider<\/strong> bijwerken met de middleware die je hebt toegevoegd aan de bovenstaande routes.<\/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>Deze configuratie beperkt verzoeken aan het <code>\/book GET<\/code> endpoint tot 5 per minuut, zoals hieronder getoond.<\/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=\"De Postman app geeft een \"429 Too Many Requests\" antwoord op een GET verzoek naar de URL \" width=\"1142\" height=\"805\"><figcaption class=\"wp-caption-text\">Een &#8220;429 Too Many Requests&#8221; antwoord voor het \/book GET endpoint op Postman.<\/figcaption><\/figure><\/figure>\n<h3>Hoe te beginnen op basis van gebruikers-ID en sessies<\/h3>\n<ol start=\"1\">\n<li>Om rate limits in te schakelen met behulp van de parameters <code>user_id<\/code> en <code>session<\/code>, moet je de functie <code>configureRateLimiting<\/code> in het bestand <strong>app\/Providers\/RouteServiceProvider<\/strong> bijwerken met de volgende aanvullende begrenzers en variabelen:<\/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>Pas ten slotte deze code toe op de routes <code>\/book\/{id} GET<\/code> en <code>\/book POST<\/code> in het bestand <code>routes\/api.php<\/code>:<\/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>Deze code beperkt verzoeken met respectievelijk <code>user_id<\/code> en <code>session<\/code>.<\/p>\n<h3>Extra methoden in Throttle<\/h3>\n<p>Laravel Throttle heeft verschillende <a href=\"https:\/\/github.com\/GrahamCampbell\/Laravel-Throttle#usage\" target=\"_blank\" rel=\"noopener noreferrer\">aanvullende methoden<\/a> voor meer controle over je implementatie van de rate limit. Deze methoden zijn onder andere:<\/p>\n<ul>\n<li><code>attempt<\/code> &#8211; Voert een hit uit op het endpoint, verhoogt de hit-telling en geeft een boolean terug die aangeeft of de geconfigureerde hitlimiet is overschreden.<\/li>\n<li><code>hit<\/code> &#8211; Voert een hit uit op de Throttle, verhoogt de hit-telling en retourneert <code>$this<\/code> om een andere (optionele) method call mogelijk te maken.<\/li>\n<li><code>clear<\/code> &#8211; Zet de Throttle telling terug op nul en geeft <code>$this<\/code> terug, zodat je desgewenst nog een method call kunt doen.<\/li>\n<li><code>count<\/code> &#8211; Geeft het totale aantal hits voor de Throttle terug.<\/li>\n<li><code>check<\/code> &#8211; Geeft een boolean terug dat aangeeft of de Throttle hitlimiet is overschreden.<\/li>\n<\/ul>\n<ol start=\"1\">\n<li>Om rate limits met behulp van deze methoden te onderzoeken, maak je een middleware app genaamd CustomMiddleware met behulp van het onderstaande commando:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan make:middleware CustomMiddleware<\/code><\/pre>\n<ol start=\"2\">\n<li>Voeg vervolgens de volgende importbestanden toe aan het nieuw aangemaakte middleware-bestand in <strong>app\/Http\/Middleware\/CustomMiddleware.php<\/strong>:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">use GrahamCampbell\\Throttle\\Facades\\Throttle;\nuse App;<\/code><\/pre>\n<ol start=\"3\">\n<li>Vervang vervolgens de inhoud van de methode <code>handle<\/code> door het volgende codefragment:<\/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>Maak in het bestand <strong>app\/Http\/Kernel.php<\/strong> een alias aan voor deze middleware-app door de array <code>middlewareAliases<\/code> als volgt bij te werken.<\/li>\n<\/ol>\n<pre><code class=\"language-php\">protected $middlewareAliases = [\n. . .\n'custom.throttle' =&gt; \\App\\Http\\Middleware\\CustomMiddleware::class, \n];<\/code><\/pre>\n<ol start=\"5\">\n<li>Pas vervolgens deze middleware toe op de <code>\/custom-route<\/code> in het bestand <strong>routes\/api.php<\/strong>:<\/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>De aangepaste middleware die zojuist is ge\u00efmplementeerd controleert of de throttle limiet is overschreden met de <code>check<\/code> methode. Als de limiet is overschreden, wordt er gereageerd met een 429 foutmelding. Anders wordt het verzoek doorgezet.<\/p>\n<h2>De applicatie deployen op de Kinsta server<\/h2>\n<p>Nu je hebt onderzocht hoe je rate limiting kunt implementeren in een Laravel applicatie, kun je de applicatie deployen naar de Kinsta server om deze wereldwijd toegankelijk te maken.<\/p>\n<ol start=\"1\">\n<li>Begin met het pushen van de bijgewerkte code naar <a href=\"https:\/\/kinsta.com\/nl\/blog\/gitlab-en-github\/\">GitHub, GitLab<\/a> of <a href=\"https:\/\/kinsta.com\/nl\/blog\/bitbucket-vs-github\/\">Bitbucket<\/a>.<\/li>\n<li>Klik op je Kinsta dashboard op de <strong>Dienst toevoegen<\/strong> knop en selecteer <strong>Applicatie<\/strong> uit de lijst. Koppel je Git account aan je Kinsta account en selecteer de juiste repository om te deployen.<\/li>\n<li>Onder <strong>Basisgegevens<\/strong> geef je de applicatie een naam en kies je het datacenter van je voorkeur. Zorg er ook voor dat je de benodigde applicatie omgevingsvariabelen hebt toegevoegd. Deze komen overeen met de variabelen in je lokale <strong>.env<\/strong> bestand: de <code>APP_KEY<\/code> en de database configuratie variabelen.<\/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=\"Het gedeelte \"Details applicatie\" van de module \"Applicatie toevoegen\" van Kinsta. \" width=\"790\" height=\"1262\"><figcaption class=\"wp-caption-text\">Applicatiedetails op MyKinsta.<\/figcaption><\/figure><\/figure>\n<ol start=\"1\">\n<li>Klik op de knop <strong>Doorgaan<\/strong> om de omgevingsvariabelen voor het bouwen te selecteren. Je kunt de standaardwaarden laten staan, omdat Kinsta de benodigde parameters automatisch invult.<\/li>\n<li>Op het tabblad <strong>Processen<\/strong> kun je de standaardwaarden laten staan of een naam voor je proces invoeren. Je kunt op dit tabblad ook de grootte van de pod en de instantie selecteren.<\/li>\n<li>Op het tabblad <strong>Betaling<\/strong> zie je ten slotte een overzicht van je selecties. Voeg de betalingsoptie van je voorkeur toe om het proces af te ronden.<\/li>\n<li>Klik op het tabblad <strong>Applicaties<\/strong> om een lijst met uitgerolde applicaties te bekijken.<\/li>\n<li>Klik op de naam van de applicatie om de details van de deployments te bekijken, zoals hieronder getoond. Je kunt de URL van de applicatie gebruiken om toegang te krijgen.<\/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=\"Het tabblad MyKinsta \"Deployments\" toont details over de ge deployen applicaties.\" width=\"1587\" height=\"836\"><figcaption class=\"wp-caption-text\">Deployment details in het MyKinsta dashboard.<\/figcaption><\/figure><\/figure>\n<h2>De applicatie testen<\/h2>\n<ol start=\"1\">\n<li>Gebruik het commando <code>php artisan serve<\/code> om de applicatie lokaal te testen.<\/li>\n<\/ol>\n<p>Dit commando maakt je applicatiebrowser toegankelijk op <code>http:\/\/localhost:8000<\/code>. Je kunt de API endpoints waarnaar je de rate limit hebt ge\u00efmplementeerd vanaf hier testen door herhaaldelijk calls te maken om de rate limit functionaliteit te activeren.<\/p>\n<p>De Kinsta server geeft een <strong>Access Forbidden<\/strong> respons omdat je geen configuratiedetails hebt toegevoegd die Kinsta vertellen hoe de applicatie geleverd moet worden. Voeg deze details nu toe.<\/p>\n<ol start=\"2\">\n<li>Maak een <code>.htaccess<\/code> bestand in de hoofdmap van je app en voeg de volgende code toe aan het bestand:<\/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>Push deze wijzigingen naar GitHub en Kinsta auto-deploys om de wijziging door te voeren.<\/li>\n<li>Open nu de applicatie met de opgegeven URL en zorg ervoor dat je de Laravel welkomstpagina ziet.<\/li>\n<\/ol>\n<p>Je kunt nu de API endpoints testen waarop je rate limiting hebt ge\u00efmplementeerd met Postman door herhaalde calls te maken totdat je de geconfigureerde limiet hebt bereikt. Je ontvangt een <strong>429 Too Many Requests<\/strong> respons na het overschrijven van de limiet.<\/p>\n<h2>Samenvatting<\/h2>\n<p>Het integreren van rate limit functionaliteiten in een Laravel API helpt bij het beheersen van de mate waarin gebruikers de resources van een applicatie gebruiken. Rate limiting helpt je om een betrouwbare gebruikerservaring te bieden zonder onder- of overbelasting. Het zorgt er ook voor dat de onderliggende infrastructuur van de applicatie functioneel en effici\u00ebnt blijft.<\/p>\n<p>Je kunt de Kinsta blog bekijken voor meer informatie over andere interessante concepten over <a href=\"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/\">Laravel<\/a> en andere webtechnologie\u00ebn. De betaalbare en vlekkeloze <a href=\"https:\/\/sevalla.com\/application-hosting\/\">hostingdiensten<\/a> worden ten zeerste aanbevolen omdat ze perfect aansluiten bij de behoeften van je applicatie en team.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Rate limiting is essentieel voor het beschermen van resources van apps of websites tegen overmatig of onjuist gebruik. Of dit nu het gevolg is van kwaadwillig &#8230;<\/p>\n","protected":false},"author":290,"featured_media":55128,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[911,866],"class_list":["post-55127","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>Zo voeg je rate limiting toe aan een API in een Laravel applicatie - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Ontdek hoe je rate limiting kunt toevoegen aan een API in een Laravel applicatie en hoe je het gebruik van de resources kunt beperken.\" \/>\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\/nl\/blog\/laravel-throttle\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zo voeg je rate limiting toe aan een API in een Laravel applicatie\" \/>\n<meta property=\"og:description\" content=\"Ontdek hoe je rate limiting kunt toevoegen aan een API in een Laravel applicatie en hoe je het gebruik van de resources kunt beperken.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-21T13:29:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-31T10:25:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-throttle.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=\"Ontdek hoe je rate limiting kunt toevoegen aan een API in een Laravel applicatie en hoe je het gebruik van de resources kunt beperken.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-throttle.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marcia Ramos\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/\"},\"author\":{\"name\":\"Marcia Ramos\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116\"},\"headline\":\"Zo voeg je rate limiting toe aan een API in een Laravel applicatie\",\"datePublished\":\"2023-08-21T13:29:25+00:00\",\"dateModified\":\"2023-08-31T10:25:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/\"},\"wordCount\":2104,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-throttle.jpg\",\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/\",\"name\":\"Zo voeg je rate limiting toe aan een API in een Laravel applicatie - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-throttle.jpg\",\"datePublished\":\"2023-08-21T13:29:25+00:00\",\"dateModified\":\"2023-08-31T10:25:44+00:00\",\"description\":\"Ontdek hoe je rate limiting kunt toevoegen aan een API in een Laravel applicatie en hoe je het gebruik van de resources kunt beperken.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-throttle.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-throttle.jpg\",\"width\":3042,\"height\":1521},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Zo voeg je rate limiting toe aan een API in een Laravel applicatie\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"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\/nl\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116\",\"name\":\"Marcia Ramos\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/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\/nl\/blog\/author\/marciaramos\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Zo voeg je rate limiting toe aan een API in een Laravel applicatie - Kinsta\u00ae","description":"Ontdek hoe je rate limiting kunt toevoegen aan een API in een Laravel applicatie en hoe je het gebruik van de resources kunt beperken.","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\/nl\/blog\/laravel-throttle\/","og_locale":"nl_NL","og_type":"article","og_title":"Zo voeg je rate limiting toe aan een API in een Laravel applicatie","og_description":"Ontdek hoe je rate limiting kunt toevoegen aan een API in een Laravel applicatie en hoe je het gebruik van de resources kunt beperken.","og_url":"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2023-08-21T13:29:25+00:00","article_modified_time":"2023-08-31T10:25:44+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-throttle.jpg","type":"image\/jpeg"}],"author":"Marcia Ramos","twitter_card":"summary_large_image","twitter_description":"Ontdek hoe je rate limiting kunt toevoegen aan een API in een Laravel applicatie en hoe je het gebruik van de resources kunt beperken.","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-throttle.jpg","twitter_creator":"@Kinsta_NL","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Marcia Ramos","Geschatte leestijd":"12 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/"},"author":{"name":"Marcia Ramos","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116"},"headline":"Zo voeg je rate limiting toe aan een API in een Laravel applicatie","datePublished":"2023-08-21T13:29:25+00:00","dateModified":"2023-08-31T10:25:44+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/"},"wordCount":2104,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-throttle.jpg","inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/","url":"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/","name":"Zo voeg je rate limiting toe aan een API in een Laravel applicatie - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-throttle.jpg","datePublished":"2023-08-21T13:29:25+00:00","dateModified":"2023-08-31T10:25:44+00:00","description":"Ontdek hoe je rate limiting kunt toevoegen aan een API in een Laravel applicatie en hoe je het gebruik van de resources kunt beperken.","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-throttle.jpg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-throttle.jpg","width":3042,"height":1521},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-throttle\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/"},{"@type":"ListItem","position":3,"name":"Zo voeg je rate limiting toe aan een API in een Laravel applicatie"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","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\/nl\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116","name":"Marcia Ramos","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/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\/nl\/blog\/author\/marciaramos\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/55127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/290"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=55127"}],"version-history":[{"count":11,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/55127\/revisions"}],"predecessor-version":[{"id":55258,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/55127\/revisions\/55258"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55127\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55127\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55127\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55127\/translations\/fr"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55127\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55127\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55127\/translations\/es"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55127\/translations\/de"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55127\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/55128"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=55127"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=55127"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=55127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}