Les dernières versions de Laravel ont montré que le fonctionnement du routage changeait un peu. C’est généralement un signe que nous ressentons une sorte de douleur – quelque chose se sent désactivé– mais n’ont pas encore trouvé la solution parfaite. En 5.3, nous l’avons peut-être trouvé.
Rétrospective : changements de routage dans la version 5.2
Dans Laravel 5.2, nous avons temporairement vu deux groupes de routes distincts dans routes.php
un pour “web” et un pour “API”, mais cela a disparu au milieu de la 5.2.
Ce qui est resté, cependant, c’est l’idée de plusieurs groupes de middleware, et il y en a un pour les routes “web” et un pour les routes “API”.
Le groupe “web” obtient tout ce dont vous vous attendez à ce que vos utilisateurs Web normaux aient besoin : sessions, cookies, protection CSRF, etc. Le groupe “API” est plus léger et est fourni par défaut avec le middleware “throttle”, ce qui plaide en faveur de une API REST sans état.
Changements de routage dans 5.3
En 5.3, le app/Http/routes.php
le fichier est maintenant déplacé à la racine routes/
répertoire, et il est maintenant divisé en deux fichiers : web.php
et api.php
. Comme vous pouvez probablement le deviner, les itinéraires dans routes/web.php
sont enveloppés de web
groupe middleware et les routes dans routes/api.php
sont enveloppés de api
groupe middleware.
Il y a quelques avantages à cela. Tout d’abord, nous obtenons la suggestion et la mise en œuvre facile de la distinction entre nos routes Web et nos routes API. Deuxièmement, c’est maintenant une convention au niveau de l’application d’avoir plusieurs fichiers de routes, ce qui libérera probablement plus de développeurs pour qu’ils se sentent à l’aise d’organiser leur fichier de routes de cette façon. Et troisièmement, cela déplace le routes
répertoire sur app/
ce qui fait à la fois le routes
répertoire plus accessible aux nouveaux utilisateurs et fait du app/
un répertoire entièrement chargé automatiquement par PSR-4, qui semble un peu pur-r.
Si vous souhaitez personnaliser cela ou ajouter vos propres fichiers d’itinéraires séparés, consultez App\Providers\RouteServiceProvider
pour l’inspiration:
...
public function map()
{
$this->mapApiRoutes();
$this->mapWebRoutes();
//
}
protected function mapApiRoutes()
{
Route::group([
'middleware' => ['api', 'auth:api'],
'namespace' => $this->namespace,
'prefix' => 'api',
], function ($router) {
require base_path('routes/api.php');
});
}
protected function mapWebRoutes()
{
Route::group([
'namespace' => $this->namespace, 'middleware' => 'web',
], function ($router) {
require base_path('routes/web.php');
});
}
Comme vous pouvez le voir, il existe une syntaxe simple pour encapsuler les résultats de n’importe quel fichier de routes donné avec un groupe de routes, puis appliquer les préfixes ou le middleware ou tout ce que vous souhaitez.
C’est ça! Apprécier!