Метод match
Метод match применяется к объекту маршрутизатора
и регистрирует маршрут, который обрабатывает запросы
с несколькими HTTP-методами. Первым параметром
передаётся массив методов, вторым - URI маршрута,
третьим - обработчик (замыкание или контроллер).
В отличие от any, который принимает все методы,
match позволяет явно указать список разрешённых.
Синтаксис
<?php
Route::match($methods, $uri, $callback);
?>
Пример
Давайте зарегистрируем маршрут, который отвечает
на GET и POST запросы по адресу '/user':
<?php
use Illuminate\Support\Facades\Route;
Route::match(['get', 'post'], '/user', function () {
return 'User route with GET and POST methods';
});
?>
Результат выполнения GET-запроса:
"User route with GET and POST methods"
Результат выполнения POST-запроса:
"User route with GET and POST methods"
Пример
Давайте зарегистрируем маршрут, который отвечает
на GET, POST и PUT запросы по адресу '/product'
с использованием контроллера:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ProductController;
Route::match(['get', 'post', 'put'], '/product', [ProductController::class, 'handle']);
?>
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProductController extends Controller
{
public function handle(Request $request)
{
$method = $request->method();
return "Product route with {$method} method";
}
}
?>
Результат выполнения GET-запроса:
"Product route with GET method"
Результат выполнения PUT-запроса:
"Product route with PUT method"
Пример
Давайте зарегистрируем маршрут для работы с API,
который отвечает на GET и DELETE запросы по адресу
'/post/{id}':
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PostController;
Route::match(['get', 'delete'], '/post/{id}', [PostController::class, 'show']);
?>
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function show(Request $request, $id)
{
$method = $request->method();
return "Post {$id}, method: {$method}";
}
}
?>
Результат выполнения GET-запроса по адресу '/post/1':
"Post 1, method: GET"
Результат выполнения DELETE-запроса по адресу '/post/5':
"Post 5, method: DELETE"