Урок 02

HTTP-методы в роутинге

HTTP определяет методы, каждый из которых означает тип действия над ресурсом.

Основные методы

  • GET — получить данные, не меняет состояние
  • POST — создать ресурс
  • PUT — обновить ресурс целиком
  • PATCH — обновить часть ресурса
  • DELETE — удалить ресурс
  • OPTIONS — узнать поддерживаемые методы
  • HEAD — как GET, но без тела ответа

Регистрация в Laravel

Route::get('/posts', fn () => 'Список постов');
Route::post('/posts', fn () => 'Создание поста');
Route::put('/posts/{id}', fn ($id) => "Обновление поста {$id}");
Route::patch('/posts/{id}', fn ($id) => "Частичное обновление {$id}");
Route::delete('/posts/{id}', fn ($id) => "Удаление поста {$id}");

Несколько методов на один URL

Route::match(['get', 'post'], '/form', function () {
    // обрабатывает и GET, и POST
});

Любой метод

Route::any('/webhook', function () {
    // реагирует на любой HTTP-метод
});

REST и CRUD

REST-архитектура сопоставляет HTTP-методы с CRUD-операциями:

МетодОперацияПример
GETReadСписок постов
POSTCreateСоздание поста
GETReadПросмотр поста
PUT/PATCHUpdateОбновление
DELETEDeleteУдаление

Именно этот принцип лежит в основе Route::resource.

Метод в запросе

Laravel может определить метод через скрытое поле _method в HTML-формах:

<form method="POST" action="/posts/5">
    @csrf
    @method('PUT')
    <!-- поля -->
</form>

Директива @method создаёт скрытое поле _method=PUT, потому что HTML-формы поддерживают только GET и POST.