Entender o funcionamento dos verbos HTTP nos possibilita criar aplicações mais robustas e fáceis de entender, já que cada operação em um CRUD, por exemplo, pode se comportar de diferentes formas.
O Laravel como qualquer outro framework e até mesmo as linguagens nativas, possuem suporte ao verbo HTTP. Nós podemos criar nosso próprio verbo e utilizar, mas isso está fora de questão, já que a comunidade adotou alguns padrões e são eles que vamos encontrar no nosso dia a dia.
O intuito aqui não é discorrer sobre API Rest, mas caso você não saiba o que é isso ou até mesmo não tenha familiaridade, recomendo se matricular no curso PHP - Criando e consumindo API RESTful que está disponível gratuitamente. Vamos entender como chamar os verbos e para o que cada um deles servem, simples assim.
No total temos oito métodos de requisições HTTP, mas em alguns softwares, como o Insomnia Rest, por exemplo, a gente só tem disponível seis.
No HTML só podemos utilizar dois verbos/métodos nos componentes de formulários, que são o post e o get. Quando utilizamos alguma API como a Fetch, Axios, entre outras, conseguimos passar o tipo de verbo na qual vamos enviar para o servidor.
No geral, utilizamos esses verbos quando estamos desenvolvendo uma aplicação Rest, normalmente o servidor devolve uma resposta com um código HTTP e seu conteúdo no formato Json.
Para definir o tipo de verbo em uma rota, basta especifica-lo após chamar o Route::, conforme mostra o código abaixo.
Route::prefix('verbos')->group(function () {
Route::get('/', [VerbosController::class, 'get']);
Route::post('/', [VerbosController::class, 'post']);
Route::put('/', [VerbosController::class, 'put']);
Route::delete('/', [VerbosController::class, 'delete']);
});
Perceba que todas as rotas apontam para verbos/, mas cada um utiliza um verbo e método diferente da classe VerbosController.
Seguindo a convenção, cada um dos verbos tem uma responsabilidade, que são elas:
Abaixo observamos a controladora utilizada para receber as requisições definidas na rota acima.
<?php
namespace App\Http\Controllers;
class VerbosController extends Controller
{
public function get()
{
return response()->json([
'type' => 'get'
]);
}
public function post()
{
return response()->json([
'type' => 'post'
]);
}
public function put()
{
return response()->json([
'type' => 'put'
]);
}
public function delete()
{
return response()->json([
'type' => 'delete'
]);
}
}
Para executar o teste acima, desativamos o CSRF para as nossas rotas. Caso você também precise desativar, basta inserir o nome da rota no Middleware app\Http\Middleware\VerifyCsrfToken.php.
protected $except = [
//
'verbos/'
];
Agora enviando uma requisição do tipo put, temos a seguinte mensagem de resposta.
E assim entendemos o que cada verbo quer dizer e como defini-los no Laravel.