Trabalhando com filtros dinâmicos utilizando o Gridify no .NET

Neste artigo vou apresentar uma forma simples, fácil e dinâmica de configurar filtros nos endpoints de APIs utilizando o .NET.

O Gridify é uma biblioteca pouco conhecida, mas de grande utilidade. Criado pelo Alireza Sabouri, ela tem o objetivo de facilitar a vida do desenvolvedor que precisa criar vários endpoints de filtragens, como por exemplo: GetById, GetByName, GetByDate. Com o Gridify é possível ter apenas um endpoint de filtragem para cada tipo de entidade.

Pré-requisitos

Web API

Na classe program.cs da API, configure conforme o código abaixo:

O próximo passo é criar o contexto (BookContext). Neste exemplo, utilizaremos o Entity Framework InMemory para persistir e consultar as informações com o Gridify:

Em seguida, crie uma controller com o nome de GridifyController e insira o código abaixo para testes:

O GridifyQuery é uma classe simples para configurar filtros, ordenação e paginação, já o método GridifyQueryable aplica esses filtros na entidade Books.

Testando

Para realizar os testes, execute o endpoint GET /gridify/books no Swagger passando os parâmetros do filtro a serem realizados no banco pelo Gridify.

Como teste, pesquisei pelo título “Programming Pearls” e trouxe um registro, caso não existisse este título, seria retornado uma lista vazia, e caso não existisse a propriedade “title” no contexto, seria retornado um erro informando que esta coluna não existe no banco.

Por questões de segurança, também é possível utilizar o Automapper para realização de mapeamentos entre a ViewModel e Entidade, assim o usuário final não precisa ter o conhecimento dos nomes das colunas no banco de dados.

Para mais detalhes e melhores práticas de utilização, sugiro seguir a documentação: https://alirezanet.github.io/Gridify/guide

Finalizando

O Gridify é uma ferramenta extremamente útil para o desenvolvedor, evitando que sejam criados vários métodos de filtragens, praticando a reutilização de códigos.

A utilização deste package é muito simples, e ainda há a possibilidade de utilizar de forma detalhada com o QueryBuilder, deixando você ainda mais no controle.

Os detalhes completo deste exemplo você encontra no meu GitHub: https://github.com/hgmauri/sample-gridify

Deixe uma resposta