Урок 02

Настройка 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"
}