У 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-репозиторієм або відео-пояснення? Напиши в коментарях або підпишись на канал 👇