Versi API di Laravel 11

Emily Anne Brown
Emily Anne Brownasal
2025-03-06 02:23:12363semak imbas

Dengan pembebasan Laravel 11, rangka aplikasi telah tipis untuk mengeluarkan fail tambahan yang tidak diperlukan pada setiap projek. Sebahagian daripada perubahan itu mengeluarkan semua penyedia perkhidmatan dari kod sumber aplikasi kecuali AppServiceProvider.

Satu lagi bahagian rangka aplikasi yang dikemas kini ialah mengeluarkan laluan API dalam pemasangan lalai. Katakan anda merancang untuk menambah API ke aplikasi anda atau secara eksklusif menulis API dengan Laravel. Dalam kes itu, anda boleh menyediakan kumpulan dan laluan middleware api dengan perintah artisan:

<!-- Syntax highlighted by torchlight.dev -->php artisan install:api

install:api menetapkan fail laluan api.php (dan mengkonfigurasinya), penghijrahan pangkalan data untuk token akses peribadi, dan fail konfigurasi sanctum. Sekiranya anda tidak perlu versi API anda, itu sahaja yang perlu anda lakukan.

#versioning API anda dalam fail berasingan

Pendekatan yang sama untuk menulis API versi di Laravel adalah memisahkan laluan ke dalam fail yang berbeza. Melakukannya memudahkan overhead penalaran tentang versi API tertentu dan menyimpan perkara -perkara yang kemas. Dalam Laravel 10 atau lebih awal, pendekatan yang sama menambah fail laluan tambahan untuk setiap versi API ke 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'));
});

Dalam contoh di atas, routes/api.php biasanya menawarkan titik akhir /user untuk sanctum Laravel, dan selebihnya laluan API disimpan dalam versi yang sesuai.

#versioning API anda di Laravel 11

dengan bootstrapping laluan bergerak keluar dari RouteServiceProvider dan ke bootstrap/app.php, Berikut adalah beberapa cara yang anda boleh versi API anda.

Pertama, mari kita menghasilkan beberapa fail untuk menunjukkan penubuhan penghalaan:

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

Gunakan apa -apa konvensyen nama fail dan lokasi yang sesuai dengan anda.

Seterusnya, buka fail routes/api.php dan tambahkan baris berikut ke bahagian bawah fail:

<!-- 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'));

Kod di atas berada dalam api.php bermaksud bahawa kita sudah bekerja dalam awalan laluan api dan menggunakan kumpulan middleware api.

Seterusnya, mari tambahkan laluan contoh untuk setiap versi API masing -masing supaya kita dapat memvisualisasikan senarai laluan untuk setiap versi.

inilah fail api_v1.php:

<!-- Syntax highlighted by torchlight.dev --><?php

use App\Http\Controllers\Api\V1\PostsController;

Route::apiResource('posts', PostsController::class);

dan fail api_v2.php:

<!-- Syntax highlighted by torchlight.dev --><?php

use App\Http\Controllers\Api\V2\PostsController;

Route::apiResource('posts', PostsController::class);

dengan fail laluan kami ditakrifkan, berjalan route:list, kita dapat melihat laluan versi!

tip pro: Anda boleh mengasingkan laluan versi yang menggunakan bendera --path, menjadikannya mudah untuk memberi tumpuan kepada versi API tertentu:

<!-- Syntax highlighted by torchlight.dev -->php artisan route:list --path=api/v1
php artisan route:list --path=api/v2

lihat bagaimana kemasnya kelihatan jika anda hanya mengeluarkan laluan untuk api/v2:

#Defkan laluan versi dalam fail bootstrap aplikasi

Pendekatan lain yang saya lihat ialah menentukan laluan API tambahan dalam fail bootstrap/app.php menggunakan argumen then:, yang menerima Closure:

<!-- Syntax highlighted by torchlight.dev -->php artisan install:api

Saya lebih suka menambah fail laluan tambahan terus ke routes/api.php, tetapi ini adalah satu lagi pendekatan yang akan berfungsi. Apabila menentukan laluan dalam fail bootstrap, kumpulan -kumpulan ini tidak dikonfigurasi untuk menggunakan kumpulan middleware api. Pastikan untuk memasukkan kumpulan middleware api dengan laluan ini!

Atas ialah kandungan terperinci Versi API di Laravel 11. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn