Laravel でミドルウェアを使用してリクエスト フローを制限する方法
はじめに:
Web アプリケーションを開発するとき、ユーザーのリクエストを制限する必要があることがよくあります。たとえば、1 分あたりに送信される特定のリクエスト数を制限したり、特定のインターフェイスに対する同時リクエストの数を制限したりするなど、リクエストが制限される場合。 Laravel フレームワークでは、ミドルウェアを通じてリクエスト フロー制限を実装できます。この記事では、ミドルウェアを使用してリクエスト フローを制限する方法と、対応するコード例を紹介します。
1. ミドルウェアとリクエスト フロー制限について理解する
ミドルウェア (Middleware) は、Laravel が提供するメカニズムであり、リクエスト処理のさまざまな段階に介入して、リクエストを処理、フィルタリング、強化することができます。リクエスト スロットルは、ユーザー リクエストの頻度または数を制限するメカニズムで、通常、リソースのアクセス速度を制御し、サーバーの安定性を保護するために使用されます。
2. スロットリングミドルウェアの作成
Laravel では、Artisan コマンドを使用してミドルウェアを作成できます: php Artisan make:middleware ThrottleRequests
生成されたミドルウェア ファイルは、app/Http/Middleware
ディレクトリにあります (例: ThrottleRequests.php
)。
次に、次のコードのようなリクエスト フロー制限ロジックをミドルウェアの handle
メソッドに実装する必要があります。
<?php namespace AppHttpMiddleware; use Closure; use IlluminateCacheRateLimiter; use SymfonyComponentHttpFoundationResponse; class ThrottleRequests { protected $limiter; public function __construct(RateLimiter $limiter) { $this->limiter = $limiter; } public function handle($request, Closure $next, $maxAttempts = 60, $decayMinutes = 1) { $key = $request->ip(); // 使用 IP 地址作为限流的关键字 if ($this->limiter->tooManyAttempts($key, $maxAttempts)) { return new Response('Too Many Attempts.', 429); } $this->limiter->hit($key, $decayMinutes * 60); return $next($request); } }
上記のコードでは、Laravel を使用します。フレームワークに組み込まれている RateLimiter
クラスはリクエストフロー制限機能を実装します。 TooManyAttempts
メソッドは、リクエストが最大許容数を超えているかどうかを判断するために使用され、超えている場合は 429 ステータス コードが返されます。hit
メソッドは、リクエストの数を記録するために使用されます。時間枠の長さを設定します。
3. ミドルウェアの登録
作成したミドルウェアを有効にするには、app/Http/Kernel.php
ファイルに $middleware
配列が必要です。のミドルウェア。ファイルを見つけて次のコードを追加します:
protected $routeMiddleware = [ // ... 'throttle' => AppHttpMiddlewareThrottleRequests::class, ];
4. リクエスト電流制限にミドルウェアを使用する
上記の手順により、リクエスト電流制限ミドルウェアが正常に作成され、ミドルウェアの登録が完了しました。次に、ルート定義またはコントローラーでミドルウェアを使用できます。
-
ルート定義でミドルウェアを使用する:
Route::middleware('throttle:10,1')->get('/test', function () { return 'Hello, Laravel!'; });
上記のコードでは、
throttle
ミドルウェアを/test
ルーティングに適用します。 1 分あたり最大 10 件のリクエストが許可され、リクエストの最大数に達すると、ユーザーは 429 ステータス コードを受け取ります。 -
コントローラーでのミドルウェアの使用:
class TestController extends Controller { public function __construct() { $this->middleware('throttle:10,1'); } public function index() { return 'Hello, Laravel!'; } }
上記のコードでは、throttle
ミドルウェアを ## に適用します。 #TestController コントローラーの
index メソッド。
この記事では、Laravel でミドルウェアを使用してリクエスト フローを制限する方法を紹介し、対応するコード例を示します。電流制限ミドルウェアを使用することで、ユーザーのリクエストの頻度と数を柔軟に制御でき、サーバーの安定性とセキュリティを保護します。実際のWeb開発においてリクエストスロットルは非常に重要な技術ですので、この記事が皆様のお役に立てれば幸いです。仕上げる###
以上がLaravelでミドルウェアを使用してリクエストフローを制限する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

laravelcanbeefeectiveivefectively-worldapplications for buildingscalablewebsolutions.1)その概要を説明することで、lastulavel'secosystem(toolslikenovaを含むlaravel'secosystem)を拡張します

バックエンド開発におけるLaravelのコア機能には、ルーティングシステム、Eloquentorm、移行機能、キャッシュシステム、キューシステムが含まれます。 1.ルーティングシステムは、URLマッピングを簡素化し、コードの組織とメンテナンスを改善します。 2.Eloquentormは、開発効率を改善するためにオブジェクト指向のデータ操作を提供します。 3.移行関数は、バージョン制御を介してデータベース構造を管理して、一貫性を確保します。 4.キャッシュシステムは、データベースクエリを削減し、応答速度を向上させます。 5.キューシステムは、大規模なデータを効果的に処理し、ユーザー要求のブロックを避け、全体的なパフォーマンスを改善します。

Laravelは、バックエンド開発で強く機能し、Eloquentorm、コントローラー、サービスクラスを介してデータベース操作を簡素化し、ビジネスロジックを処理し、キュー、イベント、その他の機能を提供します。 1)Eloquentormは、モデルを介してデータベーステーブルをマップしてクエリを簡素化します。 2)ビジネスロジックは、モジュール性と保守性を向上させるために、コントローラーとサービスクラスで処理されます。 3)キューシステムなどのその他の機能は、複雑なニーズの処理に役立ちます。

Laravel Developmentプロジェクトは、さまざまなサイズと複雑さのニーズに合う柔軟性とパワーのために選択されました。 Laravelは、ルーティングシステム、Eloquentorm、Artisan Command Lineおよびその他の機能を提供し、簡単なブログから複雑なエンタープライズレベルのシステムへの開発をサポートしています。

開発環境とエコシステムにおけるLaravelとPythonの比較は次のとおりです。1。Laravelの開発環境は簡単で、PHPと作曲家のみが必要です。 Laravelforgeなどの豊富な範囲の拡張パッケージを提供しますが、拡張パッケージのメンテナンスはタイムリーではない場合があります。 2。Pythonの開発環境もシンプルで、PythonとPIPのみが必要です。エコシステムは巨大で複数のフィールドをカバーしていますが、バージョンと依存関係の管理は複雑な場合があります。

Laravelはバックエンドロジックでどのように役割を果たしますか?ルーティングシステム、Eloquentorm、認証と承認、イベントとリスナー、パフォーマンスの最適化を通じてバックエンド開発を簡素化および強化します。 1.ルーティングシステムにより、URL構造の定義とリクエスト処理ロジックが可能になります。 2.Eloquentormは、データベースの相互作用を簡素化します。 3.認証および承認システムは、ユーザー管理に便利です。 4.イベントとリスナーは、ゆるく結合したコード構造を実装します。 5.パフォーマンスの最適化により、キャッシュとキューイングを通じてアプリケーションの効率が向上します。

Laravelの人気には、単純化された開発プロセスが含まれ、快適な開発環境を提供し、豊富な機能が提供されます。 1)Rubyonrailsの設計哲学を吸収し、PHPの柔軟性を組み合わせています。 2)Eloquentorm、Bladeテンプレートエンジンなどのツールを提供して、開発効率を向上させます。 3)そのMVCアーキテクチャと依存関係噴射メカニズムにより、コードがよりモジュール化され、テスト可能になります。 4)キャッシュシステムやベストプラクティスなどの強力なデバッグツールとパフォーマンス最適化方法を提供します。

DjangoとLaravelはどちらもフルスタックのフレームワークです。 DjangoはPython開発者や複雑なビジネスロジックに適していますが、LaravelはPHP開発者とエレガントな構文に適しています。 1.DjangoはPythonに基づいており、迅速な発展と高い並行性に適した「バッテリーコンプリート」哲学に従います。 2. LaravelはPHPに基づいており、開発者エクスペリエンスを強調しており、小規模から中規模のプロジェクトに適しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

WebStorm Mac版
便利なJavaScript開発ツール
