Різні способи написання маршрутів у Laravel

pic

Маршрути у фреймворку Laravel

Laravel — один з найпопулярніших фреймворків для PHP, і одна з причин його успіху — інтуїтивно зрозуміла система маршрутизації. У Laravel маршрути є точками входу до вашого додатку, дозволяючи вам визначити, як обробляються запити та направляються до відповідної логіки.

Цей посібник проведе вас через основи маршрутизації в Laravel, від базових понять до більш складних технік.

Що таке маршрути в Laravel?

Маршрути в Laravel визначаються в директорії routes/. За замовчуванням файл web.php обробляє маршрути для веб-додатків, тоді як файл api.php використовується для маршрутів API.
Маршрути визначають URL вашого додатку та вказують контролер або логіку, яка повинна їх обробляти.

Основна маршрутизація

Ви можете визначити простий маршрут за допомогою методу Route::get.

Приклад:

use Illuminate\Support\Facades\Route;  

Route::get('/welcome', function () {  
 return 'Welcome to Laravel!';  
});

Перехід за адресою http://yourdomain.com/welcome покаже текст "Welcome to Laravel!".

HTTP методи

Laravel підтримує різні HTTP методи для маршрутизації:

  • Route::get()
  • Route::post()
  • Route::put()
  • Route::patch()
  • Route::delete()
  • Route::options()

Приклад:

use Illuminate\Support\Facades\Route;  
use App\Http\Controllers\ExampleController;  

Route::get('/example', [ExampleController::class, 'index']); // GET запит  
Route::post('/example', [ExampleController::class, 'store']); // POST запит  
Route::put('/example/{id}', [ExampleController::class, 'update']); // PUT запит (повне оновлення)  
Route::patch('/example/{id}', [ExampleController::class, 'modify']); // PATCH запит (часткове оновлення)  
Route::delete('/example/{id}', [ExampleController::class, 'destroy']); // DELETE запит  
Route::options('/example', [ExampleController::class, 'options']); // OPTIONS запит

Тестування маршрутів:

  • GET /example → Отримує дані.
  • POST /example → Створює нові дані (передаємо тіло запиту).
  • PUT /example/{id} → Оновлює всі дані для заданого ID.
  • PATCH /example/{id} → Оновлює частину даних для заданого ID.
  • DELETE /example/{id} → Видаляє дані для заданого ID.
  • OPTIONS /example → Показує підтримувані HTTP методи.

Параметри маршруту

Обов'язкові параметри

Ви можете передавати динамічні значення до маршрутів за допомогою місць-заповнювачів.

Приклад:

Route::get('/user/{id}', function ($id) {  
 return "User ID: $id";  
});

Перехід за адресою /user/5 покаже "User ID: 5".

Необов'язкові параметри

Ви можете зробити параметр маршруту необов'язковим, додавши ? і надавши значення за замовчуванням.

Приклад:

Route::get('/user/{name?}', function ($name = 'Guest') {  
 return "Hello, $name!";  
});

Перехід за адресою /user покаже "Hello, Guest!".

Іменовані маршрути

Іменовані маршрути спрощують генерацію URL та перенаправлення користувачів.

Визначення іменованого маршруту:

Route::get('/dashboard', function () {  
 return 'Dashboard Page';  
})->name('dashboard');

Генерація URL для іменованого маршруту:

$url = route('dashboard');

Перенаправлення на іменований маршрут:

return redirect()->route('dashboard');

Групи маршрутів

Групи маршрутів дозволяють спільно використовувати атрибути, такі як посередники (middleware) або префікси, для кількох маршрутів.

Групування з посередниками (middleware)

Route::middleware(['auth'])->group(function () {  
 Route::get('/profile', function () {  
 return 'User Profile';  
 });  

 Route::get('/settings', function () {  
 return 'Settings Page';  
 });  
});

Маршрути /profile та /settings тепер вимагають посередника auth.

Групування з префіксом

Route::prefix('admin')->group(function () {  
 Route::get('/dashboard', function () {  
 return 'Admin Dashboard';  
 });  

 Route::get('/users', function () {  
 return 'Manage Users';  
 });  
});

Ці маршрути будуть доступні як /admin/dashboard та /admin/users.

Контролери маршрутів

Використання контролерів допомагає тримати файл маршрутів чистим та розділяє логіку на керовані компоненти.

Визначення маршруту з контролером

use App\Http\Controllers\UserController;  

Route::get('/user/{id}', [UserController::class, 'show']);

Приклад методу контролера:

// app/Http/Controllers/UserController.php  

namespace App\Http\Controllers;  

use Illuminate\Http\Request;  

class UserController extends Controller  
{  
 public function show($id)  
 {  
 return "Displaying user with ID: $id";  
 }  
}

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

Ресурсні маршрути дозволяють визначати маршрути для основних операцій CRUD одним рядком.

Приклад:

use App\Http\Controllers\PostController;


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

Це генерує маршрути для дій index, create, store, show, edit, update та destroy.

Згенеровані маршрути:

GET /posts -> index  
GET /posts/create -> create  
POST /posts -> store  
GET /posts/{post} -> show  
GET /posts/{post}/edit -> edit  
PUT /posts/{post} -> update  
DELETE /posts/{post} -> destroy

API маршрути

API маршрути визначаються в routes/api.php і автоматично отримують префікс /api.

Приклад:

Route::get('/products', function () {  
 return ['Product 1', 'Product 2', 'Product 3'];  
});

Перехід за адресою http://yourdomain.com/api/products поверне масив у форматі JSON.

Прив'язка моделей до маршрутів

Laravel дозволяє автоматично інжектити моделі в маршрути на основі параметрів.

Приклад:

use App\Models\User;  

Route::get('/user/{user}', function (User $user) {  
 return $user->name;  
});

Тут Laravel автоматично отримує екземпляр моделі User, який відповідає параметру {user}.

Кешування маршрутів

Для виробничих середовищ ви можете кешувати маршрути для покращення продуктивності.

Кешування маршрутів:

php artisan route:cache

Очищення кешу маршрутів:

php artisan route:clear

Висновок

Маршрутизаційна система Laravel є потужною та гнучкою, що дозволяє будувати додатки будь-якої складності.
Опанувавши різні можливості маршрутизації, ви не тільки прискорите розробку, а й напишете чистіший і більш підтримуваний код.

Яку можливість маршрутизації Laravel ви використовуєте найчастіше? Поділіться в коментарях!

КУПИТИ МЕНІ КАВУ

Підписатися на Youtube: https://www.youtube.com/@ProgrammingWithRoki

Придбати домен та хостинг: Hostinger

Успіхів у програмуванні

Перекладено з: Different Ways to Write the Laravel Routes

Leave a Reply

Your email address will not be published. Required fields are marked *