Роуты
Что такое роут
Роут (маршрут) — это правило, которое сопоставляет URL и HTTP-метод с кодом, который должен выполниться. Когда пользователь открывает /posts, Laravel ищет в таблице маршрутов запись для GET /posts и вызывает связанный обработчик.
Роуты регистрируются в файлах routes/web.php (для браузера) и routes/api.php (для API).
Простой роут
use Illuminate\Support\Facades\Route;
Route::get('/hello', function () {
return 'Hello, world!';
});
Здесь Route::get создаёт правило: если пришёл GET-запрос на /hello, вернуть строку.
HTTP-методы
HTTP определяет методы, каждый из которых означает тип действия:
- GET — получить данные
- POST — создать
- PUT — обновить целиком
- PATCH — обновить частично
- DELETE — удалить
В Laravel каждому методу соответствует свой статический метод:
Route::get('/posts', fn () => 'Список');
Route::post('/posts', fn () => 'Создание');
Route::put('/posts/{id}', fn ($id) => "Обновление {$id}");
Route::delete('/posts/{id}', fn ($id) => "Удаление {$id}");
Параметры роута
Параметры объявляются в фигурных скобках. Значение из URL попадает в аргумент функции:
Route::get('/user/{id}', function (string $id) {
return "User ID: {$id}";
});
Необязательный параметр помечается ? и получает значение по умолчанию:
Route::get('/user/{name?}', function (string $name = 'Guest') {
return "Hello, {$name}";
});
Ограничения параметров
Метод where задаёт регулярное выражение, которому должен соответствовать параметр:
Route::get('/user/{id}', function ($id) {
return $id;
})->where('id', '[0-9]+');
Если URL не соответствует шаблону — возвращается 404.
Именованные роуты
Роуту можно дать имя. Это удобно, когда нужно сгенерировать URL в коде:
Route::get('/dashboard', function () {
return view('dashboard');
})->name('dashboard');
$url = route('dashboard');
Группы роутов
Группа позволяет применить общие настройки к нескольким роутам:
Route::prefix('admin')->group(function () {
Route::get('/users', fn () => 'Users');
Route::get('/posts', fn () => 'Posts');
});
Здесь оба роута получат префикс /admin.
Группировать можно и по middleware:
Route::middleware(['auth'])->group(function () {
Route::get('/profile', fn () => 'Profile');
});
Все роуты внутри группы будут требовать аутентификации.
Просмотр роутов
php artisan route:list
Команда выводит таблицу всех зарегистрированных маршрутов с методами, URL, именами и привязанными действиями.