Avec la libération de Laravel 11, le squelette d'application a été réduit pour supprimer des fichiers supplémentaires qui ne sont pas nécessaires sur chaque projet. Une partie de cette modification a supprimé tous les fournisseurs de services du code source d'application sauf le AppServiceProvider
.
Une autre partie du squelette d'application mise à jour consiste à supprimer les routes d'API dans l'installation par défaut. Supposons que vous prévoyez d'ajouter une API à votre application ou d'écrire exclusivement une API avec Laravel. Dans ce cas, vous pouvez configurer le groupe de middleware api
et les routes avec une commande artisanale:
<!-- Syntax highlighted by torchlight.dev -->php artisan install:api
Le install:api
configure le fichier d'itinéraire api.php
(et le configure), une migration de base de données pour les jetons d'accès personnels et un fichier de configuration Sanctum. Si vous n'avez pas besoin de verser votre API, c'est tout ce que vous devez faire.
Une approche commune pour écrire des API versionnées dans Laravel sépare les itinéraires en différents fichiers. Cela simplifie les frais généraux du raisonnement sur une version API spécifique et garde les choses bien rangées. Dans Laravel 10 ou antérieure, une approche commune consiste à ajouter des fichiers d'itinéraire supplémentaires pour chaque version API au RouteServiceProvider
:
<!-- Syntax highlighted by torchlight.dev -->$this->routes(function () { Route::middleware('api') ->prefix('api') ->group(base_path('routes/api.php')); Route::middleware('api') ->prefix('api/v1') ->group(base_path('routes/api_v1.php')); Route::middleware('api') ->prefix('api/v2') ->group(base_path('routes/api_v2.php')); Route::middleware('web') ->group(base_path('routes/web.php')); });
Dans l'exemple ci-dessus, le routes/api.php
offre généralement un point de terminaison /user
pour Laravel Sanctum, et le reste des itinéraires API est niché dans la version appropriée.
Avec la route Bootstrap en quittant le RouteServiceProvider
et dans bootstrap/app.php,
voici quelques façons de version votre API.
Tout d'abord, générons quelques fichiers pour démontrer la configuration du routage:
<!-- Syntax highlighted by torchlight.dev -->touch routes/api_v1.php touch routes/api_v2.php php artisan make:controller --api Api/V1/PostsController php artisan make:controller --api Api/V2/PostsController
Utilisez la convention et l'emplacement du nom de fichier qui vous convient.
Ensuite, ouvrez le fichier routes/api.php
et ajoutez les lignes suivantes au bas du fichier:
<!-- Syntax highlighted by torchlight.dev -->Route::prefix('v1')->group(base_path('routes/api_v1.php')); Route::prefix('v2')->group(base_path('routes/api_v2.php'));
Le code ci-dessus étant dans api.php
signifie que nous travaillons déjà dans le préfixe d'itinéraire api
et utilisons le groupe de middleware api
.
Ensuite, ajoutons les itinéraires d'exemples pour chaque version API respective afin que nous puissions visualiser la liste des routes pour chaque version.
Voici le fichier api_v1.php
:
<!-- Syntax highlighted by torchlight.dev --><?php use App\Http\Controllers\Api\V1\PostsController; Route::apiResource('posts', PostsController::class);
et le fichier api_v2.php
:
<!-- Syntax highlighted by torchlight.dev --><?php use App\Http\Controllers\Api\V2\PostsController; Route::apiResource('posts', PostsController::class);
avec nos fichiers d'itinéraire définis, exécutant route:list
, nous pouvons voir les itinéraires versés!
Pro Astuce: Vous pouvez isoler les itinéraires versés à l'aide du drapeau --path
, ce qui facilite la concentration sur une version API spécifique:
<!-- Syntax highlighted by torchlight.dev -->php artisan route:list --path=api/v1 php artisan route:list --path=api/v2
Découvrez à quoi il ressemble si vous sortez simplement des routes pour api/v2
:
Une autre approche que j'ai vue est de définir des routes API supplémentaires dans le fichier bootstrap/app.php
à l'aide de l'argument then:
, qui accepte un Closure
:
<!-- Syntax highlighted by torchlight.dev -->php artisan install:api
Je préfère ajouter des fichiers d'itinéraire supplémentaires directement à routes/api.php
, mais c'est une autre approche qui fonctionnerait. Lors de la définition des itinéraires dans le fichier bootstrap, ces groupes ne sont pas configurés pour utiliser le groupe api
middleware. Assurez-vous d'inclure le groupe de middleware api
avec ces itinéraires!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!