Версійність API — ключова частина розробки. Але як керувати deprecated, sunset (end-of-life) або beta/preview версіями? Laravel API Route — пакет від Jean-Marc Strauven, який забезпечує повний lifecycle-менеджмент версій API для Laravel.
Можливості
- Multi-strategy versioning: URI path, Header, Query parameter або Accept header
- Automatic deprecation headers: сумісний із RFC 8594 (Deprecation) та RFC 7231 (Sunset)
- Version lifecycle management: стани Active, Deprecated, Sunset, Removed
- Intelligent fallback: fallback маршруту на попередні версії за потреби
- Artisan commands: створення, моніторинг та управління версіями API
- Usage tracking: опційна аналітика по версіях API
- Zero configuration start: працює з розумними налаштуваннями «з коробки»
За замовчуванням використовується версіювання через URI path (наприклад, /v1/, /v2/) — це найпопулярніша стратегія, бо її легко зрозуміти і просто реалізувати.
Щоб позначити нову версію API як поточну stable-версію, використайте метод current() фасаду ApiRoute у файлі routes/api.php:
use Grazulex\ApiRoute\Facades\ApiRoute;
ApiRoute::version('v2', function () {
Route::apiResource('orders', App\Http\Controllers\Api\V2\OrderController::class);
})->current();
А щоб позначити попередні версії як deprecated і встановити плановану дату sunset (end-of-life), використайте методи deprecated() і sunset():
use Grazulex\ApiRoute\Facades\ApiRoute;
ApiRoute::version('v1', function () {
Route::apiResource('orders', App\Http\Controllers\Api\V1\OrderController::class);
})
->deprecated('2025-08-01')
->sunset('2025-12-31');
У відповідь для deprecated-версії автоматично додадуться такі заголовки:
HTTP/1.1 200 OK
X-API-Version: v1
X-API-Version-Status: deprecated
Deprecation: Fri, 01 Aug 2025 00:00:00 GMT
Sunset: Wed, 31 Dec 2025 00:00:00 GMT
Якщо хочете іншу стратегію, а не URI path, змініть конфігурацію в config/apiroute.php і використайте query-параметри, заголовок або Accept header в запитах, наприклад:
GET /api/orders
X-API-Version: 2
GET /api/orders?api_version=2
GET /api/orders
Accept: application/vnd.api.v2+json
Також доступні кілька Artisan-команд, які дозволяють швидко переглянути статус версій API або статистику використання:
php artisan api:status
php artisan api:stats --period=30
Це лише частина можливостей пакета. Детальніше — у full documentation та на сторінці з source code на GitHub.