Настройка API в Laravel
Установка
В Laravel 13 API-роутинг и Sanctum ставятся одной командой:
php artisan install:api
Команда:
- создаёт
routes/api.php - регистрирует его в
bootstrap/app.php - устанавливает Sanctum
- создаёт миграцию
personal_access_tokens
После установки:
php artisan migrate
Регистрация в bootstrap/app.php
Если ставил вручную:
->withRouting(
web: __DIR__.'/../routes/web.php',
api: __DIR__.'/../routes/api.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
Префикс /api
Роуты из api.php автоматически получают префикс /api. Это задаётся в bootstrap/app.php:
->withRouting(
// ...
apiPrefix: 'api',
)
Можно изменить на v1 или другой.
Middleware
По умолчанию API-роуты проходят через группу api, которая включает:
throttle:api— ограничение частотыSubstituteBindings— привязка моделей
Сессии и CSRF не применяются — API stateless.
Формат ответа
Laravel возвращает JSON, если:
- запрос содержит заголовок
Accept: application/json - клиент — API-роут
- возвращается массив или объект
JsonResource
Route::get('/posts', function () {
return Post::all();
});
Вернёт массив постов в JSON.
Ошибки
Ошибки валидации возвращаются с кодом 422:
{
"message": "The title field is required.",
"errors": {
"title": ["The title field is required."]
}
}
404 возвращается как:
{
"message": "No query results for model [App\\Models\\Post] 5"
}