Pipes

Pipes são mecanismos flexíveis para transformar e validar dados de entrada em uma aplicação, garantindo a consistência e a eficiência do processamento.

Os pipes no ModularBr são uma funcionalidade importante que permitem transformar e validar os dados de entrada em uma aplicação construída com o framework. Eles são utilizados para processar os argumentos passados para os manipuladores de rota do controlador, antes de invocar o próprio manipulador.

Existem dois casos de uso principais para os pipes no ModularBr:

  1. Transformação: Os pipes de transformação permitem converter os dados de entrada em uma forma desejada. Por exemplo, você pode usar um pipe para converter uma string em um número inteiro ou para realizar alguma formatação nos dados antes de serem processados pelo manipulador de rota. Isso ajuda a garantir que os dados estejam em um formato adequado para serem utilizados no contexto da aplicação.

  2. Validação: Os pipes de validação são utilizados para avaliar os dados de entrada e determinar se eles são válidos ou não. Se os dados forem válidos, o pipe simplesmente os passa adiante para o manipulador de rota. Caso contrário, o pipe pode lançar uma exceção ou tomar alguma ação personalizada, como retornar uma resposta de erro. Isso é útil para garantir que os dados de entrada estejam de acordo com as regras definidas pela aplicação.

O ModularBr oferece uma série de pipes integrados que podem ser utilizados imediatamente, abrangendo desde validação de dados, serialização/desserialização, até autenticação e autorização. Além disso, é possível criar pipes personalizados, permitindo que você implemente lógicas específicas e personalizadas de acordo com os requisitos da sua aplicação.

Os pipes são uma ferramenta poderosa para manipular e validar os dados de entrada em uma aplicação que use o ModularBr, ajudando a melhorar a segurança, consistência e eficiência do código.

...
[Body(TPerson, TParseJsonPipe)]
[Param('id', TIsNotEmpty), Param('id', TParseIntegerPipe)]
[Query('name', TIsString), Query('name', TIsNotEmpty)]
procedure NFeServicoStatus: string;

implementation

procedure TNFeRouteHandler.NFeServicoStatus: string;
var
  LId: integer;
begin
  LId := Modular.Request.Params.Value<Integer>('id');
  ...
end;
unit person;

interface

uses
  dmfbr.decorator.include;

type
  TPerson = class
  private
    FId: integer;
    FName: string;
  public
    [IsInteger, IsNotEmpty, IsMax(1)]
    property Id: integer read FId write FId;

    [IsString, IsNotEmpty, IsLength(5, 10)]
    property Name: string read FName write FName;
  end;

implementation

end.

Para utilizar os pipes no ModularBr, é necessário definir explicitamente o seu uso através do método Modular.UsePipes(). Isso permite que você controle quais rotas ou grupos de rotas devem fazer uso dos pipes.

Ao definir o uso de pipes no ModularBr, você pode aplicar transformações nos dados de entrada, como conversões de tipos, formatações ou ajustes específicos antes de serem processados pelas rotas. Além disso, você pode realizar validações nos dados de entrada, garantindo que estejam em conformidade com as regras e restrições estabelecidas pela sua aplicação.

No entanto, é importante ressaltar que o uso de pipes é opcional e depende das necessidades e requisitos específicos do seu projeto. Se você não precisa de transformações ou validações adicionais nos dados de entrada, não é necessário definir o uso de pipes.

O ModularBr oferece flexibilidade para que você possa adaptar o uso de pipes de acordo com as necessidades de cada rota ou grupo de rotas da sua aplicação. Ao utilizar os pipes, você terá maior controle e poderá adicionar lógica personalizada para manipular e validar os dados de entrada de forma eficiente e consistente

uses
  dmfbr.validation.pipe;
...  

Modular.UsePipes(TValidationPipe.Create);

Last updated