Scramble генерує специфікацію OpenAPI з коду Laravel автоматично, без анотацій над кожним методом. Він аналізує:
- маршрути - шляхи, методи, параметри маршруту й прив'язку моделей;
- валідацію - правила з Form Request чи
$request->validate()стають описом тіла запиту й параметрів (required|email|max:255→ обов'язковий рядок формату email); - відповіді - API-ресурси (
JsonResource), повернені моделі, пагінацію,response()->json(...); - помилки - 422 для валідації, 404 для прив'язки моделей, 403 для авторизації, 401 для автентифікації.
composer require dedoc/scramble
Після встановлення документація доступна за адресою /docs/api (інтерфейс на основі Stoplight Elements), а сама специфікація - /docs/api.json.
Доповнення там, де аналізу коду недостатньо:
/**
* Список вакансій.
*
* Повертає опубліковані вакансії, найновіші першими.
*/
public function index(IndexVacancyRequest $request)
{
// ...
}
PHPDoc-коментар стає описом операції. Для складних випадків - атрибути Scramble й розширення.
Що варто налаштувати:
- доступ: за замовчуванням документація відкрита лише в локальному оточенні, у продакшені доступ визначає gate
viewApiDocs; - які маршрути документувати (за замовчуванням - з префіксом
api); - автентифікація: опис схеми (Bearer-токен Sanctum), щоб кнопка «спробувати» працювала;
- експорт:
php artisan scramble:exportзаписує специфікацію у файл - для генерації клієнтів і перевірок у CI.
Альтернатива - Scribe: генерує документацію й колекції Postman, бере опис з анотацій і може робити справжні запити до ендпойнтів, щоб отримати приклади відповідей.
Обмеження автоматичної генерації:
- точність залежить від коду: динамічні масиви в
toArray(), умовна логіка, дані з сервісів можуть описатися неточно - результат треба переглядати; - якість опису - на вас: назви полів, приклади, пояснення бізнес-правил генератор не придумає;
- вбудовані JSON:API-ресурси Laravel 13 - новий формат; варто перевірити, що версія генератора їх підтримує.