Heim >Backend-Entwicklung >PHP-Tutorial >API -Versioning in Laravel 11
Mit der Veröffentlichung von Laravel 11 wurde das Anwendungsskelett abgeschoben, um zusätzliche Dateien zu entfernen, die nicht für jedes Projekt erforderlich sind. Ein Teil dieser Änderung hat alle Dienstanbieter aus dem Anwendungsquellcode mit Ausnahme des AppServiceProvider
.
Ein weiterer Teil des aktualisierten Anwendungsskeletts besteht darin, API -Routen in der Standardinstallation zu entfernen. Angenommen, Sie planen, Ihrer Anwendung eine API hinzuzufügen oder ausschließlich eine API mit Laravel zu schreiben. In diesem Fall können Sie die api
Middleware -Gruppe und Routen mit einem Handwerkerbefehl einrichten:
<!-- Syntax highlighted by torchlight.dev -->php artisan install:api
Die install:api
stellt die Streckendatei api.php
, eine Datenbankmigration für persönliche Zugriffsstoken und eine Sanctum -Konfigurationsdatei ein. Wenn Sie Ihre API nicht verstellen müssen, ist das alles, was Sie tun müssen.
Ein allgemeiner Ansatz zum Schreiben von versionierten APIs in Laravel unterteilt Routen in verschiedene Dateien. Dies vereinfacht den Overhead der Argumentation über eine bestimmte API -Version und hält die Dinge aufgeräumt. In Laravel 10 oder früher fügt ein gemeinsamer Ansatz zusätzliche Routendateien für jede API -Version zum 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')); });
Im obigen Beispiel bietet das routes/api.php
normalerweise einen /user
-Dendpunkt für Laravel Sanctum, und der Rest der API -Routen sind in der entsprechenden Version versteckt.
mit Routenbootstrapping, die sich aus dem RouteServiceProvider
in bootstrap/app.php,
ausziehen, können Sie einige Möglichkeiten Ihrer API versionieren.
Generieren wir zuerst einige Dateien, um das Einrichten von Routing zu demonstrieren:
<!-- 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
Verwenden Sie die Konvention und den Speicherort der Dateinamen, die zu Ihnen passt.
Öffnen Sie als nächstes die Datei routes/api.php
und fügen Sie die folgenden Zeilen am Ende der Datei hinzu:
<!-- 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'));
Der obige Code ist in api.php
, bedeutet, dass wir bereits innerhalb des Präfixes api
Routen und der api
Middleware -Gruppe verwendet werden.
Fügen wir als nächstes die Beispielrouten für jede jeweilige API -Version hinzu, damit wir die Routenliste für jede Version visualisieren können.
Hier ist die api_v1.php
Datei:
<!-- Syntax highlighted by torchlight.dev --><?php use App\Http\Controllers\Api\V1\PostsController; Route::apiResource('posts', PostsController::class);
und die api_v2.php
Datei:
<!-- Syntax highlighted by torchlight.dev --><?php use App\Http\Controllers\Api\V2\PostsController; Route::apiResource('posts', PostsController::class);
Mit unseren Routendateien, die route:list
ausgeführt werden, können wir versionierte Routen sehen!
Profi -Tipp: Sie können versionierte Routen mit dem Flag --path
isolieren, um sich einfach auf eine bestimmte API -Version zu konzentrieren:
<!-- Syntax highlighted by torchlight.dev -->php artisan route:list --path=api/v1 php artisan route:list --path=api/v2
Schauen Sie sich an, wie ordentlich es aussieht, wenn Sie nur Routen für api/v2
:
Ein weiterer Ansatz, den ich gesehen habe
bootstrap/app.php
then:
Ich füge lieber zusätzliche Routendateien direkt zu Closure
hinzu, aber dies ist ein weiterer Ansatz, der funktionieren würde. Wenn Sie Routen in der Bootstrap -Datei definieren, werden diese Gruppen nicht so konfiguriert, dass sie die
Das obige ist der detaillierte Inhalt vonAPI -Versioning in Laravel 11. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!