Розробка REST API в Laravel: створення, валідація та відповіді

У Laravel створення REST API — це не лише просто, а й структуровано. У цьому пості розглянемо, як:

  • використовувати ресурсні маршрути,
  • валідовувати запити через FormRequest,
  • повертати стандартизовані API-відповіді згідно з JSON\:API чи RFC.

🔗 1. Ресурсні маршрути

Laravel надає зручний спосіб створення повноцінного REST API за допомогою

Route::apiResource()

:

use App\Http\Controllers\Api\PostController;

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

Це створює такі маршрути:

  • GET
    /posts

    — список ресурсів

  • GET
    /posts/{id}

    — перегляд одного

  • POST
    /posts

    — створення

  • PUT/PATCH
    /posts/{id}

    — оновлення

  • DELETE
    /posts/{id}

    — видалення

У контролері ви можете реалізувати методи:

index()

,

store()

,

show()

,

update()

,

destroy()

.


🛡️ 2. FormRequest для валідації

Валідацію краще відділяти у спеціальні класи. Створимо запит:

php artisan make:request StorePostRequest

У класі:

public function rules(): array
{
    return [
        'title' => 'required|string|max:255',
        'body' => 'required|string',
    ];
}

І використовуйте його в контролері:

use App\Http\Requests\StorePostRequest;

public function store(StorePostRequest $request)
{
    $post = Post::create($request->validated());

    return response()->json([
        'data' => $post,
        'message' => 'Post created successfully',
    ], 201);
}

📦 3. API-стандарти: JSON\:API і RFC

Laravel не нав’язує жорстких форматів, але рекомендує дотримуватись стандартів:

  • JSON\:API — специфікація для уніфікованого формату відповідей
  • RFC 7807 — "Problem Details for HTTP APIs"

Приклад структури помилки у стилі RFC 7807:

return response()->json([
    'type'   => 'https://example.com/probs/validation',
    'title'  => 'Validation Failed',
    'status' => 422,
    'errors' => $validator->errors(),
], 422);

А для успішної відповіді:

return response()->json([
    'data' => $post,
    'meta' => ['version' => '1.0'],
], 200);

✅ Поради

  • Використовуйте Resource-класи (
    PostResource

    ) для форматування відповідей.

  • Обов’язково повертайте правильні HTTP-коди (200, 201, 422, 404, 500).
  • Якщо API велике — розгляньте пакет
    spatie/laravel-json-api-paginate

    для зручної пагінації.


📚 Висновок

Laravel робить розробку REST API структурованою, читаємою і масштабованою. Валідація через FormRequest, логічна побудова маршрутів та відповідність стандартам — це те, що робить ваш API надійним.


Хочеш приклад повного API з GitHub-репозиторієм або відео-пояснення? Напиши в коментарях або підпишись на канал 👇

Залишити відповідь