Você está na página 1de 8

COMO IMPLEMENTAR PIPES NO NESTJS

ARRASTA PRO LADO


O que são pipes
No NestJs Pipe é uma classe que esta
anotada com o decorator @Injectable na qual
implementa a interface PipeTransformation

PIPE

PIPE

@GET() ROUTE
CLIENT-SIDE
HANDLER

FILTER

FILTER

Pipes no geral servem para:


Transformar o input do dado no formato
desejado
Validação dos dados de entrada, caso seja
avaliado como válido o dado de entrada passar
senão irá lançar uma exceção
O que são pipes
No nível do controller o pipe validation é
muito usado, pois antes do método ou
handler ser chamado o mesmo passa por um
pipe como um argumento e faz o processo de
validação ou transformação;

Depois do pipe finalizado é chamado o


handler, Nest vem com pipes embutidos e
implementados por debaixo dos panos mas
também é possível desenvolver personalizado
de acordo como que você queira;

Neste post eu vou te mostrar como vincular pipes


integrados ao handler e criar um pipe personalizado e
vincular o mesmo a um handler.
binding pipes
ParseUUIDPipe garante que o handler passe
UUID certo como parâmetro.

Um exemplo prático seria pra busca de um User pelo seu id,


vamos considerar esse id como UUID.
Nesse caso é importante garantir que o que for ser buscado
pela camada do controller seja um UUID válido, nesse caso
da pra usar o ParseUUIDPipe para validar o mesmo.
Este pipe é chamado antes de executar o handler

Usando o exemplo acima se o UUID vier errado um


erro com status code 400 irá estourar com a
mensagem de um UUID válido esperado
custom pipes
Todo pipe deve implementar o método
transform() para cumprir o contrato na
interface PipeTransform, esse método utiliza:
Valor: argumetno que se passa ao Pipe
Metadata: meta detalhes dos argumentos
Global pipes
Quando utilizei NestJS essa foi a
funcionalidade que mais curti, pois com
Global Scoped Pipes é possível anexar
qualquer pipe à nível global.
Em seguida esse pipe será aplicado a
qualquer rota em qualquer controller em
todo o projeto.
Global pipes
Se o pipe precisar ser especificado em um
único módulo sem ser global, é possível
vincular o pipe dentro do módulo que
queira
Se você curtiu esse post ajude ele a
alcançar mais pessoas pois Pipes são
incríveis

Todos os exemplos estão num projeto completo no


meu github <link na bio>

Você também pode gostar