Laravel Requests

Fabricio Ishida
edifyeducation
Published in
4 min readJun 7, 2022

Introdução

Falaremos um pouco sobre Requests utilizando o framework Laravel, em sua ultima versão 9.1. Porém, antes passaremos por algumas informações e curiosidades sobre o php e descrição sobre frameworks.

PHP em 2022 ainda faz sentido?

Por mais que com as grandes evoluções nas tecnologias e novas stacks surgindo, o PHP, linguagem criada em 1994 e liberada para comunidade em junho de 1995, por Rasmus Lerdorf, ainda é a linguagem mais utilizada em toda a web, chegando a quase 80% de toda a internet. Sendo assim, podemos achar facilmente documentações e ajuda da comunidade de forma fácil.

Frameworks

Os frameworks nos ajudam muito no desenvolvimento e manutenção de sistemas, uma vez que configuram uma padronização de todo o projeto e ainda trazem as principais bibliotecas na instalação, os frameworks php mais utilizados são Laravel, Symphony e CodeIgniter.

Laravel

O Framework Laravel é um dos mais utilizados e robustos, como visto anteriormente. Sendo assim, conseguimos ter uma documentação muito vasta e comunidade ativa em muitos blogs de dúvidas, como stackoverflow e no prório github, facilitando bastante na busca de como conseguimos fazer novas funcionalidades e manutenção de sistemas e bibliotecas. Ainda possuindo uma ferramenta chamada Artisan, pacote incluso na instalação, que nos facilita interagir com o framework, na criação de novos recursos, veremos mais a frente exemplos de uso.

Como toda ferramenta que traz robustez, o Laravel nos proporciona agilidade na criação de código e ainda elegância para conseguirmos seguir padrões adotados por toda a comunidade da web. Entraremos mais a fundo nas informações sobre Requests.

Requests

As requisições ou Requests são basicamente as informações que recebemos de formulários, cookies, chamadas de API ou qualquer outra fonte de interação com o backend que necessite passar informações para o mesmo.

O Laravel possui a classe Illuminate\Http\Requests, que nos proporciona uma forma orientada a objetos para interagir com as requisições vindas via HTTP, independente de sua origem. Sendo assim, conseguimos capturar todas as informações que nos são fornecidas pelo frontend. Porém esta é uma forma genérica, aceitando todas e quaisquer informações vindas, então porque não criarmos uma classe para tratar cada request de forma única? Veremos a seguir.

Quando criamos uma nova classe para tratar estes requests, podemos também tratar outras informações, como validações, mensagens de erro de validação e permissionamento de requests.

Criar Request com Laravel

Para criarmos uma nova classe, que cuidará dos requests do nosso controller de Users, utilizaremos o comando:

$ php artisan make:request UserPostRequest

Este comando criará um arquivo dentro de app/Http/Requests

Utilizando este método, podemos criar na função authorize as regras para autorização de uso desta classe, não permitindo que, por exemplo, usuários sem permissão o suficiente possam acessa-la.

    public function authorize()
{
$user = auth()->user();

//id 1 = admin
$idsAuthorized = [1];

if(in_array($user->role_id, $idsAuthorized)){
return true;
}

return false;
}

Dentro da função rules, podemos validar os tipos de informações que virão, criando regras de validação do Eloquent, ORM (object-relational mapper) para interação com o banco de dados incluso no Laravel. Veremos no exemplo a seguir.

     /**
* Get the validation rules that apply to the request.
*
* @return array<string, mixed>
*/
public function rules($id = null)
{
return [
return [
'name' => 'required|string|between:2,100',
'email' => 'required|string|email|max:100|unique:users,email,'.$id,
'password' => 'required|string|min:6'
];
];
}
public function failedValidation(Validator $validator)
{
throw new HttpResponseException(response()->json([
'success' => false,
'message' => 'Validation errors',
'data' => $validator->errors()
]));
}
public function feedback()
{
return [
'name.required' => 'Name is required',
'name.between' => 'Name must have 2 to 100 characteres',
'email.required' => 'Email is required',
'email.email' => 'Email is not correct',
'email.unique' => 'This email exists',
'password.required' => 'Password is required',
'password.min' => 'Password must have 6 characteres at least',
];
}

Após a classe Request ser criada, podemos chama-la dentro do controller, e todas as regras que fizemos terão que ser válidas, para que possamos prosseguir.

Para utilizarmos no controller, basta chamar o arquivo no header.

use App\Http\Requests\UserPostRequest;

Então utilizamos como um tipo ao chamarmos as funções que necessitarão do novo request criado.

     /**
* Store a newly created resource in storage.
*
* @param App\Http\Requests\UserPostRequest $request
* @return \Illuminate\Http\Response
*/
public function store(UserPostRequest $request)
{
$user = User::create($request->all());
return response()->json(["success" => $user], 201);
}

Conclusão

Vimos como funciona um Request, desde sua criação a sua utilização. Por mais que existam outros métodos de usarmos o Validate do Laravel, este é mais um deles, em que podemos tratar cada request como único e assim trazendo mais segurança para as informações e requisições feitas e cadastradas no nosso sistema.

--

--