Criando serviços REST avançados no Protheus — Parte 2 — Trabalhando com filtros

Anderson Toledo
TOTVS Developers
Published in
3 min readAug 13, 2019

Utilizando filtros simples e complexos com oData4

Neste artigo iremos abordar a utilização de filtros utilizando a url com o padrão oData4 ( para maiores informações acesse a documentação oficial aqui ).

Como o padrão oData4 é muito extenso, foram implementadas os principais filtros e os demais serão implementados sob demanda. Acompanhe quais filtros estão implementados neste artigo.

Deixando de enrolação… Iremos adequar o exemplo criado no artigo 01 para trabalhar com os filtros.

No fonte de nosso webservice ( products.prw ), adicione a propriedade aQueryString. Nessa propriedade, o servidor REST irá informar os parâmetros informados via url.

Definição da propriedade aQueryString

Agora precisamos informar o adapter que deve avaliar o filtro, caso este seja informado.

Habilita a utilização de filtro pelo adapter

Pronto, todas as alterações necessárias foram realizadas. Vamos aos testes.

Assim como na paginação, o ‘?’ é utilizado para informar parâmetros pela url.

Filtros simples

Iremos começar com os filtros simples, onde verificamos a igualdade de apenas um campo/valor.

Basicamente, é adicionada uma interrogação no final da url, o nome do campo igual ao valor.

filtro simples

Filtros complexos

Nos filtros complexos são utilizadas a sentença ?filter= seguida da expressão.

Utilizando string function startswith onde verifica se um campo começa com a expressão

Usando mais de um filtro

Também é possível utilizar expressões lógicas para unir expressões.

Filtro utilizando a operação or

Ou mesmo a utilizar parenteses para compor o filtro.

Filtro utilizando parenteses

Utilizando com paginação

Mesmo com a utilização de filtros, o resultado pode ser maior que a pagesize. Então, para passar outros parâmetros além do filtro, utilize o caractere ‘&’ para concatenação.

Exemplo com paginação

Neste rápido artigo foi demonstrado como utilizar filtros. Verifique os filtros disponíveis nesta página e deixe sua API muito mais dinâmica.

Referências

Fontes utilizados como exemplo estão disponíveis no Github em: https://github.com/andersontoledo/ProtheusRestSamples/tree/master/Artigo02

Listagem de operadores implementados/exemplos
https://medium.com/@toledo.anderson/rela%C3%A7%C3%A3o-de-filtros-odata4-53d089a02faf?sk=20c3bc6e03663a381540aaf636c078a8

--

--