{"id":62388,"date":"2023-08-21T10:31:13","date_gmt":"2023-08-21T13:31:13","guid":{"rendered":"https:\/\/kinqsta.com\/pt\/?p=62388&#038;preview=true&#038;preview_id=62388"},"modified":"2023-08-30T05:32:29","modified_gmt":"2023-08-30T08:32:29","slug":"limitacao-de-taxa-laravel","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/","title":{"rendered":"Como Adicionar Limita\u00e7\u00e3o de Taxa a uma API em um Aplicativo Laravel"},"content":{"rendered":"<p>A limita\u00e7\u00e3o de taxa \u00e9 essencial para proteger os recursos do aplicativo ou do site contra o uso excessivo, ou inadequado. Seja como resultado de uma interven\u00e7\u00e3o humana mal-intencionada, de ataques baseados em bots ou de uma vulnerabilidade negligenciada, o uso indevido de recursos pode interferir no acesso leg\u00edtimo ao seu aplicativo e introduzir vulnerabilidades graves.<\/p>\n<p>Este artigo explora como adicionar limita\u00e7\u00e3o de taxa a uma API em um aplicativo Laravel.<\/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>Controle o tr\u00e1fego da sua API no Laravel<\/h2>\n<p>A limita\u00e7\u00e3o de taxa \u00e9 um mecanismo projetado para atenuar a explora\u00e7\u00e3o dos recursos do seu aplicativo. Embora tenha muitos usos, \u00e9 particularmente \u00fatil para APIs p\u00fablicas em sistemas grandes e dimension\u00e1veis. Ele garante que todos os usu\u00e1rios leg\u00edtimos tenham acesso justo aos recursos do sistema.<\/p>\n<p>A limita\u00e7\u00e3o de taxa tamb\u00e9m \u00e9 fundamental para a seguran\u00e7a, o controle de custos e a estabilidade geral do sistema. Ele pode ajudar a evitar ataques baseados em solicita\u00e7\u00f5es, como ataques distribu\u00eddos de nega\u00e7\u00e3o de servi\u00e7o (DDoS &#8211; distributed denial-of-service). Esse ataque se baseia no envio de solicita\u00e7\u00f5es repetidas para sobrecarregar e interromper o acesso a um aplicativo ou servidor de site.<\/p>\n<p>H\u00e1 v\u00e1rios m\u00e9todos para implementar a limita\u00e7\u00e3o de taxa. Voc\u00ea pode usar vari\u00e1veis que caracterizam o solicitante para determinar quem pode acessar seu aplicativo e com que frequ\u00eancia. Algumas vari\u00e1veis comuns incluem:<\/p>\n<ul>\n<li><strong>Endere\u00e7o IP<\/strong> &#8211; A implementa\u00e7\u00e3o de limites de taxa com base em endere\u00e7os IP permite que voc\u00ea restrinja o n\u00famero de solicita\u00e7\u00f5es por endere\u00e7o. Esse m\u00e9todo \u00e9 especialmente vantajoso em circunst\u00e2ncias em que os usu\u00e1rios podem acessar um aplicativo sem fornecer credenciais.<\/li>\n<li><strong>Chave de API<\/strong> &#8211; Limitar o acesso por meio de chaves API implica fornecer ao solicitante, chaves API pr\u00e9-geradas e estabelecer limites de taxa por chave. Com essa abordagem, voc\u00ea tamb\u00e9m pode aplicar diferentes n\u00edveis de acesso \u00e0s chaves API geradas.<\/li>\n<li><strong>ID do cliente<\/strong> &#8211; Voc\u00ea tamb\u00e9m pode gerar previamente uma ID do cliente que um usu\u00e1rio pode incorporar no cabe\u00e7alho ou no corpo das solicita\u00e7\u00f5es de API. Esse m\u00e9todo permite que voc\u00ea defina n\u00edveis de acesso por ID para garantir que nenhum cliente monopolize os recursos do sistema.<\/li>\n<\/ul>\n<h3>Middleware do Laravel<\/h3>\n<p>O middleware fornece um mecanismo conveniente para inspecionar e filtrar <a href=\"https:\/\/kinqsta.com\/pt\/blog\/solicitacoes-http-javascript\/\">solicita\u00e7\u00f5es HTTP<\/a> que entram em um aplicativo. Essencialmente, \u00e9 uma camada de c\u00f3digo entre o aplicativo e sua infraestrutura subjacente para permitir a comunica\u00e7\u00e3o entre seus recursos.<\/p>\n<h2>Como implementar limites de taxa<\/h2>\n<p>Este tutorial usa uma API de minibiblioteca existente na framework do Laravel 10 para demonstrar o uso do Laravel Throttle. O projeto inicial de amostra cont\u00e9m as implementa\u00e7\u00f5es b\u00e1sicas de cria\u00e7\u00e3o, leitura, atualiza\u00e7\u00e3o e exclus\u00e3o (CRUD) necess\u00e1rias para gerenciar livros em uma cole\u00e7\u00e3o e duas rotas extras para demonstrar alguns conceitos de limita\u00e7\u00e3o de taxa.<\/p>\n<h3>Pr\u00e9-requisitos<\/h3>\n<p>O tutorial pressup\u00f5e que voc\u00ea esteja familiarizado com os conceitos b\u00e1sicos de desenvolvimento de API no Laravel. Certifique-se de que voc\u00ea tenha o seguinte:<\/p>\n<ul>\n<li>PHP 8.2, <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Composer<\/a> e <a href=\"https:\/\/laravel.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel<\/a> instalados e configurados em seu computador local<\/li>\n<li>Uma conta <a href=\"https:\/\/kinqsta.com\/pt\/inscreva-se\/\">Kinsta<\/a> ativa<\/li>\n<li>Uma conta no <a href=\"https:\/\/github.com\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub<\/a>, <a href=\"https:\/\/gitlab.com\" target=\"_blank\" rel=\"noopener noreferrer\">GitLab<\/a> ou <a href=\"https:\/\/bitbucket.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bitbucket<\/a> para voc\u00ea enviar seu c\u00f3digo<\/li>\n<\/ul>\n<p>Voc\u00ea tamb\u00e9m usa o <a href=\"https:\/\/my.kinqsta.com?lang=pt\">MyKinsta<\/a> para configurar e implantar essa API. Voc\u00ea pode acompanhar o <a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-library-api-template\" target=\"_blank\" rel=\"noopener noreferrer\">template do projeto<\/a> fornecido e visualizar o resultado no <a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-library-api\" target=\"_blank\" rel=\"noopener noreferrer\">c\u00f3digo-fonte completo<\/a>.<\/p>\n<h2>Configura\u00e7\u00e3o do aplicativo Laravel<\/h2>\n<ol start=\"1\">\n<li>Para come\u00e7ar, clone o <a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-library-api-template\" target=\"_blank\" rel=\"noopener noreferrer\">template de projeto<\/a>.<\/li>\n<li>Em seguida, crie um arquivo <strong>.env<\/strong> no diret\u00f3rio raiz do projeto e copie o conte\u00fado de <strong>.env.example<\/strong> para ele.<\/li>\n<li>Em seguida, conclua a configura\u00e7\u00e3o usando os seguintes comandos para instalar as depend\u00eancias do aplicativo e gerar a chave do aplicativo.<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">composer install\nphp artisan key:generate<\/code><\/pre>\n<p>Se esse comando n\u00e3o adicionar automaticamente a chave do aplicativo ao seu arquivo <strong>.env<\/strong>, execute <code>php artisan key:generate --show<\/code>, copie a chave gerada e cole no arquivo <strong>.env<\/strong> como o valor para <code>APP_KEY<\/code>.<\/p>\n<ol start=\"4\">\n<li>Quando a instala\u00e7\u00e3o das depend\u00eancias e a gera\u00e7\u00e3o da chave do aplicativo estiverem conclu\u00eddas, inicie o aplicativo usando o seguinte comando:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan serve<\/code><\/pre>\n<p>Esse comando inicia o aplicativo e o torna acess\u00edvel por meio do navegador em <code>https:\/\/127.0.0.1:8000<\/code>.<\/p>\n<ol start=\"5\">\n<li>Visite a URL para confirmar se a p\u00e1gina de boas-vindas do Laravel aparecer\u00e1:<\/li>\n<\/ol>\n<figure style=\"width: 1279px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-welcome-page.png\" alt=\"A tela de boas-vindas do Laravel\" width=\"1279\" height=\"801\"><figcaption class=\"wp-caption-text\">A tela de boas-vindas do Laravel<\/figcaption><\/figure>\n<h2>Configura\u00e7\u00f5es do banco de dados<\/h2>\n<p>Vamos configurar e definir o banco de dados do aplicativo no <a href=\"https:\/\/my.kinqsta.com\/login?lang=pt\">MyKinsta<\/a>.<\/p>\n<ol start=\"1\">\n<li>Navegue at\u00e9 o painel de controle da sua conta MyKinsta e clique no bot\u00e3o <strong>Adicionar servi\u00e7o<\/strong>:<\/li>\n<\/ol>\n<figure style=\"width: 1582px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-mykinsta-services.png\" alt=\"Painel MyKinsta com v\u00e1rios servi\u00e7os configurados.\" width=\"1582\" height=\"476\"><figcaption class=\"wp-caption-text\">Painel MyKinsta com v\u00e1rios servi\u00e7os configurados.<\/figcaption><\/figure>\n<ol start=\"2\">\n<li>Na lista <strong>Adicionar servi\u00e7o<\/strong>, clique em <strong>Banco de dados<\/strong> e configure os par\u00e2metros para iniciar sua inst\u00e2ncia do banco de dados:<\/li>\n<\/ol>\n<figure style=\"width: 786px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-mykinsta-database.png\" alt=\"Configura\u00e7\u00e3o do banco de dados MyKinsta.\" width=\"786\" height=\"1266\"><figcaption class=\"wp-caption-text\">Configura\u00e7\u00e3o do banco de dados MyKinsta.<\/figcaption><\/figure>\n<p>Este tutorial usa o MariaDB, mas voc\u00ea pode escolher qualquer uma das op\u00e7\u00f5es de banco de dados compat\u00edveis com o Laravel que a Kinsta oferece.<\/p>\n<ol start=\"3\">\n<li>Quando voc\u00ea tiver inserido os detalhes do seu banco de dados, clique no bot\u00e3o <strong>Continuar<\/strong> para finalizar o processo.<\/li>\n<\/ol>\n<p>Os bancos de dados provisionados na Kinsta t\u00eam par\u00e2metros de conex\u00e3o internos e externos. Voc\u00ea deve usar par\u00e2metros de conex\u00e3o interna para aplicativos hospedados na mesma conta Kinsta e par\u00e2metros externos para conex\u00f5es externas. Portanto, use as credenciais do banco de dados externo da Kinsta para seu aplicativo.<\/p>\n<ol start=\"4\">\n<li>Copie e atualize as credenciais <strong>.env<\/strong> do banco de dados do aplicativo com as credenciais externas mostradas na captura de tela abaixo:<\/li>\n<\/ol>\n<figure style=\"width: 1590px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-mykinsta-database-settings.png\" alt=\"Detalhes de configura\u00e7\u00e3o do banco de dados MyKinsta.\" width=\"1590\" height=\"1133\"><figcaption class=\"wp-caption-text\">Detalhes de configura\u00e7\u00e3o do banco de dados MyKinsta.<\/figcaption><\/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>Ap\u00f3s preencher as credenciais do banco de dados, teste a conex\u00e3o aplicando a migra\u00e7\u00e3o do banco de dados usando o comando abaixo:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan migrate<\/code><\/pre>\n<p>Se tudo funcionar corretamente, voc\u00ea ver\u00e1 uma resposta semelhante \u00e0 essa:<\/p>\n<figure style=\"width: 1999px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-terminal-database-migration.png\" alt=\"Migra\u00e7\u00e3o bem-sucedida do banco de dados em um terminal.\" width=\"1999\" height=\"450\"><figcaption class=\"wp-caption-text\">Migra\u00e7\u00e3o bem-sucedida do banco de dados em um terminal.<\/figcaption><\/figure>\n<ol start=\"6\">\n<li>Em seguida, use o seguinte comando para listar as rotas de aplicativos e ver as rotas j\u00e1 implementadas.<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan route:list<\/code><\/pre>\n<p>Agora voc\u00ea deve ver os endpoints de API dispon\u00edveis:<\/p>\n<figure style=\"width: 1999px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-terminal-api-endpoints.png\" alt=\"Lista de rotas do aplicativo no terminal.\" width=\"1999\" height=\"411\"><figcaption class=\"wp-caption-text\">Lista de rotas do aplicativo no terminal.<\/figcaption><\/figure>\n<ol start=\"7\">\n<li>Inicie o aplicativo e confirme se tudo continua funcionando bem. Voc\u00ea pode testar esses endpoints por meio do terminal usando uma ferramenta como <a href=\"https:\/\/www.postman.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Postman<\/a> ou CURL.<\/li>\n<\/ol>\n<h2>Como limitar a taxa em um aplicativo Laravel<\/h2>\n<p>H\u00e1 v\u00e1rias t\u00e9cnicas de limita\u00e7\u00e3o de taxa dispon\u00edveis para aplicativos Laravel. Voc\u00ea pode bloquear um conjunto de <a href=\"https:\/\/kinqsta.com\/pt\/blog\/ip-estaticos-e-dinamicos\/\">endere\u00e7os IP<\/a> ou impor limites de solicita\u00e7\u00e3o baseados na dura\u00e7\u00e3o com base no endere\u00e7o IP, ou no user_id de um usu\u00e1rio. A seguir, voc\u00ea aplicar\u00e1 cada um desses m\u00e9todos.<\/p>\n<ol start=\"1\">\n<li>Instale o pacote Laravel Throttle usando o seguinte comando:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">composer require \"graham-campbell\/throttle:^10.0\"<\/code><\/pre>\n<ol start=\"2\">\n<li>Voc\u00ea tamb\u00e9m pode fazer altera\u00e7\u00f5es adicionais nas configura\u00e7\u00f5es do Laravel Throttle publicando o arquivo <code>vendor configurations<\/code>:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan vendor:publish --provider=\"GrahamCampbellThrottleThrottleServiceProvider\"<\/code><\/pre>\n<h3>Como bloquear endere\u00e7os IP<\/h3>\n<p>Uma t\u00e9cnica de limita\u00e7\u00e3o de taxa permite que voc\u00ea bloqueie solicita\u00e7\u00f5es de um conjunto espec\u00edfico de endere\u00e7os IP.<\/p>\n<ol start=\"1\">\n<li>Para come\u00e7ar, crie o middleware necess\u00e1rio:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan make:middleware RestrictMiddleware<\/code><\/pre>\n<ol start=\"2\">\n<li>Em seguida, abra o arquivo de middleware <strong>app\/Http\/Middleware\/RestrictMiddleware.php<\/strong> criado e substitua o c\u00f3digo na fun\u00e7\u00e3o <code>handle<\/code> pelo snippet abaixo. Certifique-se de que voc\u00ea adicionou <code>use App;<\/code> \u00e0 lista de importa\u00e7\u00f5es na parte superior do arquivo.<\/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<p>No arquivo <strong>app\/Http\/Kernel.php<\/strong>, crie um alias para esse aplicativo de middleware atualizando a array <code>middlewareAliases<\/code> da seguinte forma:<\/p>\n<pre><code class=\"language-php\">protected $middlewareAliases = [\n. . .\n'custom.restrict' =&gt; AppHttpMiddlewareRestrictMiddleware::class,\n];<\/code><\/pre>\n<ol start=\"4\">\n<li>Em seguida, aplique esse middleware ao <code>\/restricted-route<\/code> no arquivo <strong>routes\/api.php<\/strong> da seguinte forma e 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>Quando est\u00e1 funcionando corretamente, esse middleware bloqueia todas as solicita\u00e7\u00f5es dos IPs na array <code> $restrictedIps<\/code>: <code>127.0.0.1<\/code> e <code>102.129.158.0<\/code>. As solicita\u00e7\u00f5es desses IPs retornam uma resposta <strong>403 Forbidden<\/strong>, conforme mostrado abaixo:<\/p>\n<figure style=\"width: 1136px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-postman-returns-403.png\" alt=\"Uma resposta 403 Forbidden para o endpoint\/restricted-route GET no Postman.\" width=\"1136\" height=\"807\"><figcaption class=\"wp-caption-text\">Uma resposta 403 Forbidden para o endpoint\/restricted-route GET no Postman.<\/figcaption><\/figure>\n<h3>Como limitar as solicita\u00e7\u00f5es por endere\u00e7o IP<\/h3>\n<p>Em seguida, voc\u00ea limita a taxa de solicita\u00e7\u00f5es usando o endere\u00e7o IP do usu\u00e1rio.<\/p>\n<ol start=\"1\">\n<li>Aplique o middleware Throttle \u00e0s rotas <code>GET<\/code> e <code>PATCH<\/code> do endpoint <code>\/book<\/code> em <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>Voc\u00ea tamb\u00e9m deve atualizar a fun\u00e7\u00e3o <code>configureRateLimiting<\/code> no arquivo <strong>app\/Providers\/RouteServiceProvider<\/strong> com o middleware que adicionou \u00e0s rotas acima.<\/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>Essa configura\u00e7\u00e3o limita as solicita\u00e7\u00f5es ao endpoint <code>\/book GET<\/code> a 5 por minuto, conforme mostrado abaixo.<\/p>\n<figure style=\"width: 1142px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-postman-returns-429.png\" alt=\"Uma resposta \"429 Too Many Requests\" para o endpoint\/book GET no Postman.\" width=\"1142\" height=\"805\"><figcaption class=\"wp-caption-text\">Uma resposta &#8220;429 Too Many Requests&#8221; para o endpoint\/book GET no Postman.<\/figcaption><\/figure>\n<h3>Como limitar com base no ID do usu\u00e1rio e nas sess\u00f5es<\/h3>\n<ol start=\"1\">\n<li>Para limitar a taxa usando os par\u00e2metros <code>user_id<\/code> e <code>session<\/code>, atualize a fun\u00e7\u00e3o <code>configureRateLimiting<\/code> no arquivo <strong>app\/Providers\/RouteServiceProvider<\/strong> com os seguintes limitadores e vari\u00e1veis adicionais:<\/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>Por fim, aplique esse c\u00f3digo \u00e0s rotas <code>\/book\/{id} GET<\/code> e <code>\/book POST<\/code> no arquivo <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>Esse c\u00f3digo limita as solicita\u00e7\u00f5es que usam <code>user_id<\/code> e <code>session<\/code>, respectivamente.<\/p>\n<h3>M\u00e9todos adicionais no Throttle<\/h3>\n<p>O Laravel Throttle apresenta v\u00e1rios <a href=\"https:\/\/github.com\/GrahamCampbell\/Laravel-Throttle#usage\" target=\"_blank\" rel=\"noopener noreferrer\">m\u00e9todos adicionais<\/a> para que voc\u00ea tenha maior controle sobre sua implementa\u00e7\u00e3o de limita\u00e7\u00e3o de taxa. Esses m\u00e9todos incluem:<\/p>\n<ul>\n<li><code>attempt<\/code> &#8211; Atinge o endpoint, incrementa a contagem de ocorr\u00eancias e retorna um booleano indicando se o limite de ocorr\u00eancias configurado for excedido.<\/li>\n<li><code>hit<\/code> &#8211; Atinge o Throttle, aumenta a contagem de ocorr\u00eancias e retorna <code>$this<\/code> para permitir outra chamada de m\u00e9todo (opcional).<\/li>\n<li><code>clear<\/code> &#8211; Redefine a contagem do Throttle para zero e retorna <code>$this<\/code> para que voc\u00ea possa fazer outra chamada de m\u00e9todo, se desejar.<\/li>\n<li><code>count<\/code> &#8211; Retorna o n\u00famero total de ocorr\u00eancias para o Throttle.<\/li>\n<li><code>check<\/code> &#8211; Retorna um booleano que indica se o limite de ocorr\u00eancias do Throttle foi excedido.<\/li>\n<\/ul>\n<ol start=\"1\">\n<li>Para explorar a limita\u00e7\u00e3o de taxa usando esses m\u00e9todos, crie um aplicativo de middleware chamado CustomMiddleware usando o comando abaixo:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">php artisan make:middleware CustomMiddleware<\/code><\/pre>\n<ol start=\"2\">\n<li>Em seguida, adicione os seguintes arquivos de importa\u00e7\u00e3o ao arquivo de middleware rec\u00e9m-criado em <strong>app\/Http\/Middleware\/CustomMiddleware.php<\/strong>:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">use GrahamCampbellThrottleFacadesThrottle;\nuse App;<\/code><\/pre>\n<ol start=\"3\">\n<li>Em seguida, substitua o conte\u00fado do m\u00e9todo <code>handle<\/code> pelo seguinte trecho de c\u00f3digo:<\/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>No arquivo <strong>app\/Http\/Kernel.php<\/strong>, crie um alias para esse aplicativo de middleware atualizando a array <code>middlewareAliases<\/code> da seguinte forma.<\/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>Em seguida, aplique esse middleware ao <code>\/custom-route<\/code> no arquivo <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>O middleware personalizado rec\u00e9m-implementado verifica se o limite de throttle foi excedido usando o m\u00e9todo <code>check<\/code>. Se o limite for ultrapassado, ele responde com um erro 429. Caso contr\u00e1rio, permite que a requisi\u00e7\u00e3o continue.<\/p>\n<h2>Como implantar o aplicativo no servidor Kinsta<\/h2>\n<p>Agora que voc\u00ea j\u00e1 explorou como implementar a limita\u00e7\u00e3o de taxa em um aplicativo Laravel, implemente o aplicativo no servidor Kinsta para torn\u00e1-lo acess\u00edvel globalmente.<\/p>\n<ol start=\"1\">\n<li>Comece enviando o c\u00f3digo atualizado para o <a href=\"https:\/\/kinqsta.com\/pt\/blog\/gitlab-vs-github\/\">GitHub, GitLab<\/a> ou <a href=\"https:\/\/kinqsta.com\/pt\/blog\/bitbucket-vs-github\/\">Bitbucket<\/a>.<\/li>\n<li>No painel da Kinsta, clique no bot\u00e3o <strong>Adicionar servi\u00e7o<\/strong> e selecione <strong>Aplicativo<\/strong> na lista. Vincule sua conta Git \u00e0 sua conta Kinsta e selecione o reposit\u00f3rio correto para implantar.<\/li>\n<li>Em <strong>Detalhes b\u00e1sicos<\/strong>, nomeie o aplicativo e escolha o centro de dados de sua prefer\u00eancia. Al\u00e9m disso, certifique-se de que voc\u00ea adicionou as vari\u00e1veis de ambiente do aplicativo necess\u00e1rias. Elas correspondem \u00e0s vari\u00e1veis presentes em seu arquivo <strong>.env<\/strong> local: <code>APP_KEY<\/code> e as vari\u00e1veis de configura\u00e7\u00e3o do banco de dados.<\/li>\n<\/ol>\n<figure style=\"width: 790px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-mykinsta-app-details.png\" alt=\"Detalhes do aplicativo no MyKinsta.\" width=\"790\" height=\"1262\"><figcaption class=\"wp-caption-text\">Detalhes do aplicativo no MyKinsta.<\/figcaption><\/figure>\n<ol start=\"1\">\n<li>Clique no bot\u00e3o <strong>Continuar<\/strong> para selecionar as vari\u00e1veis do ambiente de build. Voc\u00ea pode deixar os valores padr\u00e3o, pois a Kinsta preenche automaticamente os par\u00e2metros necess\u00e1rios.<\/li>\n<li>Na aba <strong>Processos<\/strong>, voc\u00ea pode deixar os valores padr\u00e3o ou inserir um nome para o seu processo. Voc\u00ea tamb\u00e9m pode selecionar os tamanhos do pod e da inst\u00e2ncia nessa guia.<\/li>\n<li>Finalmente, a aba <strong>Pagamento<\/strong> exibe um resumo de suas sele\u00e7\u00f5es. Adicione a op\u00e7\u00e3o de pagamento que voc\u00ea preferir para finalizar o processo.<\/li>\n<li>Ap\u00f3s conclu\u00eddo, clique na aba <strong>Aplicativos<\/strong> para visualizar uma lista de aplicativos implantados.<\/li>\n<li>Clique no nome do aplicativo para visualizar os detalhes da implanta\u00e7\u00e3o, conforme mostrado abaixo. Voc\u00ea pode usar a URL do aplicativo para acess\u00e1-lo.<\/li>\n<\/ol>\n<figure style=\"width: 1587px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/07\/laravel-throttle-mykinsta-app-deployments.png\" alt=\"Detalhes da implanta\u00e7\u00e3o no painel MyKinsta.\" width=\"1587\" height=\"836\"><figcaption class=\"wp-caption-text\">Detalhes da implanta\u00e7\u00e3o no painel MyKinsta.<\/figcaption><\/figure>\n<h2>Como testar o aplicativo<\/h2>\n<ol>\n<li>Para testar o aplicativo localmente, use o comando <code>php artisan serve<\/code>.<\/li>\n<\/ol>\n<p>Esse comando torna o navegador do aplicativo acess\u00edvel em <code>http:\/\/localhost:8000<\/code>. Voc\u00ea pode testar os endpoints da API nos quais implementou a limita\u00e7\u00e3o de taxa a partir daqui, fazendo chamadas repetidas para acionar a funcionalidade de limita\u00e7\u00e3o de taxa.<\/p>\n<p>O servidor Kinsta exibe uma resposta <strong>Access Forbidden<\/strong> porque voc\u00ea n\u00e3o adicionou detalhes de configura\u00e7\u00e3o que orientam a Kinsta sobre como servir o aplicativo. Adicione esses detalhes agora.<\/p>\n<ol start=\"2\">\n<li>Crie um arquivo <code>.htaccess<\/code> no diret\u00f3rio raiz do seu aplicativo e adicione o seguinte c\u00f3digo ao arquivo.<\/li>\n<\/ol>\n<pre><code class=\"language-apacheconf\">&lt;IfModule mod_rewrite.c&gt;\nRewriteEngine On\nRewriteRule ^(.*)$ public\/$1 [L]\n&lt;\/IfModule&gt;\n<\/code><\/pre>\n<ol start=\"3\">\n<li>Envie essas altera\u00e7\u00f5es para o GitHub e a Kinsta far\u00e1 a implanta\u00e7\u00e3o autom\u00e1tica para que voc\u00ea fa\u00e7a a altera\u00e7\u00e3o.<\/li>\n<li>Agora, abra o aplicativo usando a URL fornecida e verifique se voc\u00ea v\u00ea a p\u00e1gina de boas-vindas do Laravel.<\/li>\n<\/ol>\n<p>Agora voc\u00ea pode testar os endpoints da API nos quais implementou a limita\u00e7\u00e3o de taxa usando o Postman, fazendo chamadas repetidas at\u00e9 atingir o limite configurado. Voc\u00ea receber\u00e1 uma resposta <strong>429 Too Many Requests<\/strong> ap\u00f3s exceder o limite.<\/p>\n<h2>Resumo<\/h2>\n<p>A integra\u00e7\u00e3o de funcionalidades de limita\u00e7\u00e3o de taxa em uma API do Laravel ajuda a controlar a taxa na qual os usu\u00e1rios consomem os recursos de um aplicativo. A limita\u00e7\u00e3o de taxa ajuda voc\u00ea a fornecer uma experi\u00eancia de usu\u00e1rio confi\u00e1vel sem gastos excessivos ou insuficientes. Isso tamb\u00e9m garante que a infraestrutura subjacente do aplicativo permane\u00e7a funcional e eficiente.<\/p>\n<p>Voc\u00ea tamb\u00e9m pode conferir o blog da Kinsta para saber mais sobre outros conceitos interessantes sobre <a href=\"https:\/\/kinqsta.com\/pt\/topicos\/laravel\/\">Laravel<\/a> e outras tecnologias da web. <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Os servi\u00e7os de hospedagem<\/a> acess\u00edveis e cont\u00ednuos s\u00e3o altamente recomendados para as necessidades do seu aplicativo e da sua equipe.<\/p>\n<p>\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A limita\u00e7\u00e3o de taxa \u00e9 essencial para proteger os recursos do aplicativo ou do site contra o uso excessivo, ou inadequado. Seja como resultado de uma &#8230;<\/p>\n","protected":false},"author":290,"featured_media":62389,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[951,984],"class_list":["post-62388","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>Como Adicionar Limita\u00e7\u00e3o de Taxa a uma API em um Aplicativo Laravel<\/title>\n<meta name=\"description\" content=\"Explore como adicionar limita\u00e7\u00e3o de taxa a uma API em um aplicativo Laravel e mitigar a explora\u00e7\u00e3o dos recursos do seu aplicativo.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Como Adicionar Limita\u00e7\u00e3o de Taxa a uma API em um Aplicativo Laravel\" \/>\n<meta property=\"og:description\" content=\"Explore como adicionar limita\u00e7\u00e3o de taxa a uma API em um aplicativo Laravel e mitigar a explora\u00e7\u00e3o dos recursos do seu aplicativo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstapt\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-21T13:31:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-30T08:32:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/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=\"Explore como adicionar limita\u00e7\u00e3o de taxa a uma API em um aplicativo Laravel e mitigar a explora\u00e7\u00e3o dos recursos do seu aplicativo.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/laravel-throttle.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marcia Ramos\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/\"},\"author\":{\"name\":\"Marcia Ramos\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116\"},\"headline\":\"Como Adicionar Limita\u00e7\u00e3o de Taxa a uma API em um Aplicativo Laravel\",\"datePublished\":\"2023-08-21T13:31:13+00:00\",\"dateModified\":\"2023-08-30T08:32:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/\"},\"wordCount\":2332,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/laravel-throttle.jpg\",\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/\",\"url\":\"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/\",\"name\":\"Como Adicionar Limita\u00e7\u00e3o de Taxa a uma API em um Aplicativo Laravel\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/laravel-throttle.jpg\",\"datePublished\":\"2023-08-21T13:31:13+00:00\",\"dateModified\":\"2023-08-30T08:32:29+00:00\",\"description\":\"Explore como adicionar limita\u00e7\u00e3o de taxa a uma API em um aplicativo Laravel e mitigar a explora\u00e7\u00e3o dos recursos do seu aplicativo.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/laravel-throttle.jpg\",\"contentUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/laravel-throttle.jpg\",\"width\":3042,\"height\":1521},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinqsta.com\/pt\/topicos\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Como Adicionar Limita\u00e7\u00e3o de Taxa a uma API em um Aplicativo Laravel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#website\",\"url\":\"https:\/\/kinqsta.com\/pt\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstapt\/\",\"https:\/\/x.com\/kinsta_pt\",\"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:\/\/kinqsta.com\/pt\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116\",\"name\":\"Marcia Ramos\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/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:\/\/kinqsta.com\/pt\/blog\/author\/marciaramos\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Como Adicionar Limita\u00e7\u00e3o de Taxa a uma API em um Aplicativo Laravel","description":"Explore como adicionar limita\u00e7\u00e3o de taxa a uma API em um aplicativo Laravel e mitigar a explora\u00e7\u00e3o dos recursos do seu aplicativo.","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:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/","og_locale":"pt_PT","og_type":"article","og_title":"Como Adicionar Limita\u00e7\u00e3o de Taxa a uma API em um Aplicativo Laravel","og_description":"Explore como adicionar limita\u00e7\u00e3o de taxa a uma API em um aplicativo Laravel e mitigar a explora\u00e7\u00e3o dos recursos do seu aplicativo.","og_url":"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2023-08-21T13:31:13+00:00","article_modified_time":"2023-08-30T08:32:29+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/laravel-throttle.jpg","type":"image\/jpeg"}],"author":"Marcia Ramos","twitter_card":"summary_large_image","twitter_description":"Explore como adicionar limita\u00e7\u00e3o de taxa a uma API em um aplicativo Laravel e mitigar a explora\u00e7\u00e3o dos recursos do seu aplicativo.","twitter_image":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/laravel-throttle.jpg","twitter_creator":"@kinsta_pt","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Marcia Ramos","Tempo estimado de leitura":"12 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/"},"author":{"name":"Marcia Ramos","@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116"},"headline":"Como Adicionar Limita\u00e7\u00e3o de Taxa a uma API em um Aplicativo Laravel","datePublished":"2023-08-21T13:31:13+00:00","dateModified":"2023-08-30T08:32:29+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/"},"wordCount":2332,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/laravel-throttle.jpg","inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/","url":"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/","name":"Como Adicionar Limita\u00e7\u00e3o de Taxa a uma API em um Aplicativo Laravel","isPartOf":{"@id":"https:\/\/kinqsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/laravel-throttle.jpg","datePublished":"2023-08-21T13:31:13+00:00","dateModified":"2023-08-30T08:32:29+00:00","description":"Explore como adicionar limita\u00e7\u00e3o de taxa a uma API em um aplicativo Laravel e mitigar a explora\u00e7\u00e3o dos recursos do seu aplicativo.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/#primaryimage","url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/laravel-throttle.jpg","contentUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/08\/laravel-throttle.jpg","width":3042,"height":1521},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/pt\/blog\/limitacao-de-taxa-laravel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinqsta.com\/pt\/topicos\/laravel\/"},{"@type":"ListItem","position":3,"name":"Como Adicionar Limita\u00e7\u00e3o de Taxa a uma API em um Aplicativo Laravel"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/pt\/#website","url":"https:\/\/kinqsta.com\/pt\/","name":"Kinsta\u00ae","description":"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura","publisher":{"@id":"https:\/\/kinqsta.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/pt\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstapt\/","https:\/\/x.com\/kinsta_pt","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:\/\/kinqsta.com\/pt\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116","name":"Marcia Ramos","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/#\/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:\/\/kinqsta.com\/pt\/blog\/author\/marciaramos\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/62388","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/users\/290"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/comments?post=62388"}],"version-history":[{"count":15,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/62388\/revisions"}],"predecessor-version":[{"id":62641,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/62388\/revisions\/62641"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62388\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62388\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62388\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62388\/translations\/fr"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62388\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62388\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62388\/translations\/es"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62388\/translations\/de"},{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/62388\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/media\/62389"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/media?parent=62388"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/tags?post=62388"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/topic?post=62388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}