Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le filtrage limite les jeux de données volumineux uniquement aux enregistrements dont vous avez besoin. Dans REST, le générateur d’API de données (DAB) prend en charge un paramètre de requête inspiré par $filter OData. Chaque filtre se compile en SQL paramétrable pour assurer la sécurité et la cohérence.
Aperçu rapide
| Operator | Meaning |
|---|---|
eq |
égal |
ne |
différent de |
gt |
supérieur à |
ge |
supérieur ou égal à |
lt |
inférieur à |
le |
inférieur ou égal à |
and |
AND logique |
or |
OR logique |
not |
logique NOT |
( ) |
groupement |
eq
Égal à. Retourne les enregistrements où la valeur d’un champ correspond exactement au littéral fourni ou null.
Dans cet exemple, nous obtenons des livres où le titre est égal 'Dune', l’indicateur disponible est vrai, le prix est 20, la date de publication est le 1er janvier 2024 et l’évaluation est null.
GET /api/books?$filter=
title eq 'Dune' and
available eq true and
price eq 20 and
published_on eq 2024-01-01T00:00:00Z and
rating eq null
Note
$filter prend en charge eq null et ne null directement pour les comparaisons null.
SQL conceptuel
SELECT * FROM Books
WHERE title = 'Dune'
AND available = 1
AND price = 20
AND published_on = '2024-01-01T00:00:00Z'
AND rating IS NULL;
ne
Pas égal à. Retourne les enregistrements où la valeur d’un champ ne correspond pas au littéral donné ou n’est pas null.
Dans cet exemple, nous obtenons des livres où le titre n’est pas 'Foundation', l’indicateur disponible n’est pas faux, le prix n’est pas zéro, la date de publication n’est pas le 31 décembre 2023 et l’évaluation n’est pas null.
GET /api/books?$filter=
title ne 'Foundation' and
available ne false and
price ne 0 and
published_on ne 2023-12-31T00:00:00Z and
rating ne null
Note
Lors du filtrage sur les champs date ou datetime, utilisez le format UTC ISO 8601 non cité (yyyy-MM-ddTHH:mm:ssZ).
Les formats de style OData entre guillemets ou OData ne sont pas valides.
- Incorrect :
$filter=Date ge '2025-01-01' - Incorrect :
$filter=Date ge datetime'2025-01-01' - C’est bien ça:
$filter=Date ge 2025-01-01T00:00:00Z
SQL conceptuel
SELECT * FROM Books
WHERE title <> 'Foundation'
AND available <> 0
AND price <> 0
AND published_on <> '2023-12-31T00:00:00Z'
AND rating IS NOT NULL;
gt
Plus grand que. Retourne les enregistrements où la valeur d’un champ est strictement supérieure au littéral donné.
Dans cet exemple, nous obtenons des livres dont le titre trie par ordre alphabétique 'A', l’indicateur disponible est vrai, le prix est supérieur à 10 et la date de publication est postérieure au 1er janvier 2020.
GET /api/books?$filter=
title gt 'A' and
available gt false and
price gt 10 and
published_on gt 2020-01-01T00:00:00Z
SQL conceptuel
SELECT * FROM Books
WHERE title > 'A'
AND available > 0
AND price > 10
AND published_on > '2020-01-01T00:00:00Z';
ge
Supérieur ou égal. Retourne les enregistrements où la valeur d’un champ est supérieure ou égale au littéral donné.
Dans cet exemple, nous obtenons des livres dont le titre est 'A' ou une version ultérieure, l’indicateur disponible est vrai, le prix est au moins 10 et la date de publication est le 1er janvier 2020 ou après le 1er janvier 2020.
GET /api/books?$filter=
title ge 'A' and
available ge false and
price ge 10 and
published_on ge 2020-01-01T00:00:00Z
SQL conceptuel
SELECT * FROM Books
WHERE title >= 'A'
AND available >= 0
AND price >= 10
AND published_on >= '2020-01-01T00:00:00Z';
lt
Moins de. Retourne les enregistrements où la valeur d’un champ est strictement inférieure au littéral donné.
Dans cet exemple, nous obtenons des livres dont le titre trie avant 'Z', l’indicateur disponible est faux, le prix est inférieur à 50 et la date de publication est antérieure au 1er janvier 2030.
GET /api/books?$filter=
title lt 'Z' and
available lt true and
price lt 50 and
published_on lt 2030-01-01T00:00:00Z
SQL conceptuel
SELECT * FROM Books
WHERE title < 'Z'
AND available < 1
AND price < 50
AND published_on < '2030-01-01T00:00:00Z';
le
Inférieur ou égal. Retourne les enregistrements où la valeur d’un champ est inférieure ou égale au littéral donné.
Dans cet exemple, nous obtenons des livres dont le titre trie avant ou égal à 'Z', l’indicateur disponible est vrai, le prix est de 100 ou moins, et la date de publication est le 1er janvier 2030.
GET /api/books?$filter=
title le 'Z' and
available le true and
price le 100 and
published_on le 2030-01-01T00:00:00Z
SQL conceptuel
SELECT * FROM Books
WHERE title <= 'Z'
AND available <= 1
AND price <= 100
AND published_on <= '2030-01-01T00:00:00Z';
and
AND logique. Combine plusieurs conditions qui doivent toutes être vraies pour qu’un enregistrement corresponde.
Dans cet exemple, nous obtenons des livres où le titre est 'Dune', l’indicateur disponible est vrai, le prix est inférieur à 50, la date de publication est postérieure au 1er janvier 2020 et l’évaluation est null.
GET /api/books?$filter=
title eq 'Dune' and
available eq true and
price lt 50 and
published_on ge 2020-01-01T00:00:00Z and
rating eq null
SQL conceptuel
SELECT * FROM Books
WHERE title = 'Dune'
AND available = 1
AND price < 50
AND published_on >= '2020-01-01T00:00:00Z'
AND rating IS NULL;
or
OR logique. Combine les conditions où au moins une doit être vraie pour qu’un enregistrement corresponde.
Dans cet exemple, nous obtenons des livres où le titre est 'Dune', ou l’indicateur disponible est vrai, ou le prix est supérieur à 20, ou la date de publication est antérieure au 1er janvier 2025, ou l’évaluation est null.
GET /api/books?$filter=
title eq 'Dune' or
available eq true or
price gt 20 or
published_on lt 2025-01-01T00:00:00Z or
rating eq null
SQL conceptuel
SELECT * FROM Books
WHERE title = 'Dune'
OR available = 1
OR price > 20
OR published_on < '2025-01-01T00:00:00Z'
OR rating IS NULL;
not
Non logique. Annule une condition afin que les enregistrements soient retournés uniquement si la condition est false.
Dans cet exemple, nous obtenons tous les livres qui n’ont pas le titre 'Romance', ne sont pas indisponibles, ne coûtent pas moins de 10 $, n’ont pas été publiés avant le 1er janvier 2020 et n’ont pas d’évaluation null.
GET /api/books?$filter=
not (
title eq 'Romance' and
available eq false and
price lt 10 and
published_on lt 2020-01-01T00:00:00Z and
rating eq null
)
SQL conceptuel
SELECT * FROM Books
WHERE NOT (
title = 'Romance'
AND available = 0
AND price < 10
AND published_on < '2020-01-01T00:00:00Z'
AND rating IS NULL
);
( ) groupement
Regroupe les sous-expressions afin de pouvoir contrôler l’ordre d’évaluation dans les filtres complexes.
Dans cet exemple, nous obtenons des livres où le titre est 'Fiction''SciFi'ou , et le livre est disponible ou prix inférieur à 25 $, et la date de publication est postérieure au 1er janvier 2020, et l’évaluation est null.
GET /api/books?$filter=
(title eq 'Fiction' or title eq 'SciFi') and
(available eq true or price lt 25) and
published_on ge 2020-01-01T00:00:00Z and
rating eq null
SQL conceptuel
SELECT * FROM Books
WHERE (title = 'Fiction' OR title = 'SciFi')
AND (available = 1 OR price < 25)
AND published_on >= '2020-01-01T00:00:00Z'
AND rating IS NULL;
Exemple de configuration
{
"runtime": {
"pagination": {
"default-page-size": 100,
"max-page-size": 100000
}
},
"entities": {
"Book": {
"source": {
"type": "table",
"object": "dbo.books"
},
"mappings": {
"sku_title": "title",
"sku_price": "price"
},
"relationships": {
"book_category": {
"cardinality": "one",
"target.entity": "Category",
"source.fields": [ "category_id" ],
"target.fields": [ "id" ]
}
}
},
"Category": {
"source": {
"type": "table",
"object": "dbo.categories"
},
"relationships": {
"category_books": {
"cardinality": "many",
"target.entity": "Book",
"source.fields": [ "id" ],
"target.fields": [ "category_id" ]
}
}
}
}
}
Voir aussi
| Concept | REST | GraphQL | Objectif |
|---|---|---|---|
| Projection | $select | Éléments | Choisir les champs à retourner |
| Filtrage | $filter | filtre | Restreindre les lignes par condition |
| Tri | $orderby | orderBy | Définir l’ordre de tri |
| Taille de la page | $first | first | Limiter le nombre d’éléments par page |
| Continuation | $after | après | Continuer à partir de la dernière page à l’aide d’un curseur |
Note
Les mots clés REST commencent par $les conventions OData suivantes.