OData : quelques règles
Cette section aide à se familiariser avec la syntaxe OData pour définir les filtres à appliquer sur les requêtes de lecture des ressources.
Les règles évoquées concernent par conséquent uniquement la méthode et le paramètre : $filter
Opérateurs
Ne pas utiliser les syntaxes classiques des opérateurs de comparaison tels que =
, !=
, <>
mais utiliser la syntaxe requise pour OData : eq
, ne
, …
numero = 'DUPUIS' numero <> 'DUPUIS'
numero eq 'DUPUIS' numero ne 'DUPUIS'
Opérateurs et fonctions en minuscule
Tous les opérateurs et toutes les fonctions OData sont à exprimer en minuscules. Exemple ne pas utiliser And
mais and
numero eq 'DUPUIS' And StartsWith(toLower(intitule),'DUP')
numero eq 'DUPUIS' and startswith(tolower(intitule),'DUP')
Délimitateur de chaînes
Pour entourer des constantes chaînes de caractères, ne pas utiliser le double quote (guillemet) "
mais le simple quote (apostrophe) '
numero eq "DUPUIS" startswith(intitule,"CAR")
numero eq 'DUPUIS' startswith(intitule,'CAR')
Séparateurs de paramètres
Pour séparer des paramètres dans une fonction, ne pas utiliser le point virgule ;
mais la virgule ,
startswith(intitule;'DUP')
startswith(intitule,'DUP')
Espaces entre propriétés, opérateurs et valeurs
Ajoutez obligatoirement des espaces avant et après les opérateurs
numeroeq'DUPUIS'
numero eq 'DUPUIS'
Casse sensible pour comparaisons
Les comparaisons étant sensibles à la casse, pour effectuer des comparaisons insensibles à la casse utilisez tolower
ou toupper
.
startswith(intitule,'dup') contains(intitule,'DUP')
startswith(tolower(intitule),'dup') contains(toupper(intitule),'DUP')
Casse sensible pour les noms des propriétés
Les noms des propriétés sont sensibles à la casse et doivent être mentionnées telles que documentées dans le manuel de référence de l’API.
journal/typenumerotation eq 'Manuelle' and journal/Type eq 'VTE'
journal/typeNumerotation eq 'Manuelle' and journal/type eq 'VTE'
Séparateur de sous ressource
Pour tester une propriété d’une sous ressource ne la séparez pas par un point .
mais par une barre oblique (slash) /
journal.code eq 'VTE' startswith(tolower(tiers.adresse.codePostal),'75')
journal/code eq 'VTE' startswith(tolower(tiers/adresse/codePostal),'75')
Tests de dates
Pour tester des dates ne pas exprimer les dates en chaînes et utilisez cast(..,'Date')
.
dateDebut ge '2020-01-01' and dateFin le '2020-12-31'
cast(dateDebut,'Date') ge 2020-01-01 and cast(dateFin,'Date') le 2020-12-31
Opérateurs et fonctions implémentées dans l’API
Vérifiez la liste des opérations et fonctions OData éventuellement non implémentées dans l’API pour leur substituer des opérations ou fonctions supportées.
Exemples : il est possible de remplacer l’opérateur in
par l’opérateur or
et, selon l’usage, la fonction substring
par contains
ou startswith
.
code in ('VTE','ACH') substring(code,0,1) eq 'V'
code eq 'VTE' or code eq 'ACH' startswith(code,'V')