Saltar para o conteúdo principal
Versão: 18

$filter

Permite consultar os dados numa dataclass ou método (por exemplo, $filter="firstName!='' AND salary>30000")

Descrição

Este parâmetro permite-lhe definir o filtro para a sua dataclass ou método.

Utilizar um filtro simples

Um filtro é composto pelos seguintes elementos:

{attribute} {comparator} {value}

Por exemplo: $filter="firstName=john" onde firstName é o atributo, = é o comparador ** e john é o valor **.

Utilizar um filtro complexo

Um filtro mais complexo é composto pelos seguintes elementos, que juntam duas consultas:

{attribute} {comparator} {value} {AND/OR/EXCEPT} {attribute} {comparator} {value}

Por exemplo: $filter="firstName=john AND salary>20000" onde firstName y salary são atributos da classe de dados Employee.

Utilizar a propriedade params

Também pode usar a propriedade params de 4D.

{attribute} {comparator} {placeholder} {AND/OR/EXCEPT} {attribute} {comparator} {placeholder}&$params='["{value1}","{value2}"]"'

Por exemplo: $filter="firstName=:1 AND salary>:2"&$params='["john",20000]' onde firstName e salary são os atributos da classe de dados Employee.

Para mais informações sobre como consultar dados em 4D, consulte a documentação dataClass.query().

Ao inserir aspas (') ou aspas duplas ("), deve escapar-lhes utilizando o seu código de caracteres:

Quotes ('): \u0027 Double quotes ("): \u0022

Por exemplo, pode escrever o seguinte ao passar um valor com uma aspa ao utilizar a propriedade params:
http://127.0.0.1:8081/rest/Person/?$filter="lastName=:1"&$params='["O\u0027Reilly"]'

If you pass the value directly, you can write the following: http://127.0.0.1:8081/rest/Person/?$filter="lastName=O'Reilly"

Atributo

Se o atributo estiver na mesma dataclass, pode simplesmente passá-lo diretamente (exemplo, firstName). No entanto, se pretender consultar outra dataclass, deve incluir o nome do atributo relacional mais o nome do atributo, ou seja, o caminho (exemplo, employer.name). O nome do atributo é sensível às maiúsculas e minúsculas (firstName não é igual a FirstName).

Também é possível consultar atributos do tipo Object utilizando a notação de ponto. Por exemplo, se tiver um atributo cujo nome é "objAttribute" com a seguinte estrutura:

{
prop1: "this is my first property",
prop2: 9181,
prop3: ["abc","def","ghi"]
}

É possível pesquisar no objeto escrevendo o seguinte:

GET /rest/Person/?filter="objAttribute.prop2 == 9181"

Comparador

O comparador deve ser um dos seguintes valores:

ComparadorDescrição
=é igual a
!=diferente de
>maior que
>=maior ou igual a
<menor que
<=menor que ou igual a
begincomeça com

Exemplos

No exemplo seguinte, procuramos todos os empregados cujo apelido começa por "j":

 GET  /rest/Employee?$filter="lastName begin j"

Nesse exemplo pesquisamos na classe de dados Empregado todos os empregados cujo salário seja superior a 20.000 e que não trabalhem para uma empresa chamada Acme:

 GET  /rest/Employee?$filter="salary>20000 AND  
employer.name!=acme"&$orderby="lastName,firstName"

Neste exemplo, buscamos na classe de dados Person todas as pessoas cuja propriedade número no atributo anotherobj de tipo Object for maior que 50:

 GET  /rest/Person/?filter="anotherobj.mynum > 50"