Heim >Backend-Entwicklung >PHP-Tutorial >API -Versioning in Laravel 11

API -Versioning in Laravel 11

Emily Anne Brown
Emily Anne BrownOriginal
2025-03-06 02:23:12363Durchsuche

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.

entfernt

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.

#versionierung Ihrer API in separaten Dateien

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:

hinzu
<!-- 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.

#versionierung Ihrer API in Laravel 11

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:

ausgeben

#definierende versionierte Routen in der App Bootstrap -Datei

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

Middleware -Gruppe verwenden. Stellen Sie sicher

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn