Middlewares

Um Middleware no Hello Framework é um filtro entre as requisições e as rotas, executando lógica personalizada antes do processamento de um controlador atrelado a uma rota.

Introdução: Um middleware é uma espécie de filtro de rotas. Com o uso de um middleware, é possível controlar a renderização de uma rota de acordo com a lógica algorítmica definida no corpo do middleware.

Para criar um middleware no Hello Framework, você pode usar o Hello CLI para gerar a estrutura básica da classe do middleware. Em seguida, você poderá implementar a sua lógica. O middleware consiste basicamente em dois métodos públicos. O método "handle" é responsável pela lógica do middleware e deve retornar verdadeiro para permitir a renderização da rota, caso contrário, a rota será bloqueada. O outro método é o "message", que retorna uma string com a mensagem de bloqueio da rota pelo middleware quando o usuário que está tentando acessar determinada rota não atende aos critérios de verificação. Além disso, é possível ter acesso aos valores do método HTTP sendo executado na requisição e à rota em que o middleware foi invocado por meio dos parâmetros "method" e "route" no momento da execução do método "handle".

Para criar uma classe de middleware usando o comando Hello CLI, você pode executar o seguinte comando, onde "MeuMiddleware" é o nome da sua classe de middleware. Lembre-se de substituir pelo nome de sua escolha:

php hello make:middleware MeuMiddleware

Na criação da classe de middleware por meio da CLI, o método "message" não será gerado automaticamente, pois esse método é herdado da classe de middleware. Ele pode ser sobrescrito caso você deseje alterar a mensagem retornada. Segue um exemplo de estrutura de classe de middleware:

<?php
class MeuMiddleware extends Middleware
{
   public function handle($method,$route)
   {
      if($method == 'get') return true;
   }

   public function message()
   {
      return 'Essa rota só poderá ser solicitada por meio do método GET';
   }
}

Após criar o middleware, é necessário registrá-lo na aplicação no arquivo "middlewares.php", localizado no diretório "config" na raiz do seu projeto. Esse arquivo deve retornar um array associativo, onde as chaves são os nomes dos middlewares registrados na aplicação e que serão utilizados nas rotas, e os valores do array são o caminho da classe do middleware, ou seja, o namespace com o nome da classe. Segue um exemplo de como seria o arquivo e o registro:

<?php
// config/middlewares.php

return [
    'teste' => App\Middlewares\MeuMiddleware::class,
    'outroMiddleware' => App\Middlewares\OutroMiddleware::class,
];

Depois de criar a estrutura do seu middleware, implementar a lógica e registrá-lo na aplicação, você poderá utilizá-lo em qualquer rota por meio dos métodos específicos para middleware durante a definição e uso da rota. Segue um exemplo de código:

Route::get('/rota-exemplo', 'Controller@metodo')
->middleware('meuMiddleware');

No exemplo acima, a rota "/rota-exemplo" está sendo definida usando o método "get" do objeto "Router". O middleware "meuMiddleware" é especificado usando o método "middleware", indicando que ele deve ser aplicado a essa rota específica. Certifique-se de substituir 'meuMiddleware' pelo nome do middleware que você registrou na aplicação.

Dessa forma, o middleware será acionado quando essa rota for acessada e a lógica definida no método "handle" do middleware será executada, decidindo se a rota deve ser renderizada ou bloqueada com base em sua implementação.

Lembre-se de ajustar o código de acordo com a estrutura e convenções de nomenclatura do seu projeto.

Last updated