Laravel - Middleware: Your Gateway to Request Handling
Bonjour là-bas, futurs développeurs Laravel ! Aujourd'hui, nous allons plonger dans le monde fascinant des Middleware Laravel. Imaginez les middleware comme un vigile attentionné pour votre application - il vérifie et traite les requêtes avant qu'elles n'atteignent la logique principale de votre application. Mettons-nous en route ensemble !
Qu'est-ce que le Middleware ?
Avant de nous pencher sur le code, comprenons ce qu'est le middleware. Imaginez que vous organisez une fête (votre application), et que vous avez un vigile à l'entrée. Ce vigile peut :
- Vérifier si les gens sont sur la liste des invités (authentification)
- S'assurer qu'ils sont correctement habillés (validation) 3.leur donner un bracelet (ajouter des informations à la requête)
- Ou même les renvoyer (terminer la requête)
C'est essentiellement ce que fait le middleware pour votre application Laravel !
Enregistrer le Middleware
Maintenant, voyons comment nous pouvons créer et enregistrer notre propre middleware.
Créer un Middleware
Premièrement, nous allons créer un middleware simple qui vérifie si un utilisateur a plus de 18 ans :
<?php
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
public function handle($request, Closure $next)
{
if ($request->age <= 18) {
return redirect('home');
}
return $next($request);
}
}
Dans cet exemple, notre middleware CheckAge
vérifie si le paramètre age
dans la requête est supérieur à 18 ans. Sinon, il redirige vers la page d'accueil. Sinon, il transmet la requête au middleware suivant ou à l'application principale.
Enregistrer un Middleware Global
Pour utiliser ce middleware globalement (pour toutes les routes), nous devons l'enregistrer dans le fichier app/Http/Kernel.php
:
protected $middleware = [
// ...
\App\Http\Middleware\CheckAge::class,
];
Enregistrer un Middleware de Route
Si vous souhaitez utiliser le middleware uniquement pour certaines routes, vous pouvez l'enregistrer comme un middleware de route :
protected $routeMiddleware = [
// ...
'checkage' => \App\Http\Middleware\CheckAge::class,
];
Ensuite, vous pouvez l'utiliser dans vos routes comme ceci :
Route::get('adult-only', function () {
//
})->middleware('checkage');
Paramètres du Middleware
Parfois, nous voulons que notre middleware soit plus flexible. C'est là que les paramètres du middleware deviennent pratiques !
Modifions notre middleware CheckAge
pour accepter un paramètre d'âge minimum :
<?php
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
public function handle($request, Closure $next, $minAge)
{
if ($request->age <= $minAge) {
return redirect('home');
}
return $next($request);
}
}
Maintenant, nous pouvons utiliser ce middleware avec différents seuils d'âge :
Route::get('adult-only', function () {
//
})->middleware('checkage:18');
Route::get('senior-only', function () {
//
})->middleware('checkage:65');
N'est-ce pas génial ? Nous avons rendu notre middleware réutilisable pour différentes situations !
Middleware Terminable
Parfois, nous voulons que notre middleware fasse quelque chose après que la réponse a été envoyée au navigateur. C'est là que les middleware terminables entrent en jeu !
Créons un middleware qui enregistre le temps de réponse :
<?php
namespace App\Http\Middleware;
use Closure;
class LogResponseTime
{
public function handle($request, Closure $next)
{
$request->start_time = microtime(true);
return $next($request);
}
public function terminate($request, $response)
{
$duration = microtime(true) - $request->start_time;
\Log::info('Temps de réponse : ' . $duration . ' secondes');
}
}
Ce middleware ajoute un start_time
à la requête, puis enregistre le temps total de réponse après l'envoi de la réponse.
Pour utiliser le middleware terminable, assurez-vous qu'il est enregistré dans votre fichier app/Http/Kernel.php
:
protected $middleware = [
// ...
\App\Http\Middleware\LogResponseTime::class,
];
Méthodes du Middleware
Voici un tableau des principales méthodes que vous utiliserez lorsque vous travaillerez avec des middleware :
Méthode | Description |
---|---|
handle() |
La logique principale du middleware. Traite la requête et optionnellement la transmet au middleware suivant. |
terminate() |
S'exécute après que la réponse a été envoyée au navigateur. Utilisé pour le nettoyage ou l'enregistrement. |
Conclusion
Et voilà, les amis ! Nous avons parcouru le territoire des Middleware Laravel, de la création et l'enregistrement des middleware à l'utilisation des paramètres et des middleware terminables. Souvenez-vous, le middleware est comme le couteau suisse du traitement des requêtes - il est polyvalent, puissant et un outil essentiel dans votre boîte à outils Laravel.
Alors que vous poursuivez votre aventure Laravel, vous trouverez des centaines de façons créatives d'utiliser le middleware. Peut-être créerez-vous des middleware pour vérifier le mode maintenance, enregistrer les requêtes ou même transformer les données de la requête. Les possibilities sont infinies !
Continuez à coder, continuez à apprendre, et surtout, amusez-vous ! Jusqu'à la prochaine fois, bon codage Laravel !
Credits: Image by storyset