1. Home
  2. Iterop Design
  3. Listes et référentiels métiers
  4. Manipuler les référentiels métiers par l’API

Manipuler les référentiels métiers par l’API

Voici une liste de toutes les requêtes qui sont à votre disposition pour pouvoir manipuler vos tables de référentiel métier.

Les requêtes de l’API qui s’appliquent sur les référentiels métiers permettent de faire des opérations d’ajout, sélection, mise à jour et suppression.

Introduction

Il existe plusieurs types de corps de requête. La plus sophistiquée concerne celle qui est utilisée pour manipuler le contenu du référentiel métier.

Les éléments du corps de cette requête correspondent à des morceaux de requête SQL.

Corps de la requête.
Exemple

Nous avons un référentiel métier qui répertorie des animaux (chiens et chats). Il possède une colonne Nom (Texte), une colonne Race (Texte) et une colonne Tatouage (booléen).

Les sélecteurs (1️⃣ selectors)

“selectors” correspond à la partie qui fait suite au WHERE dans une requête SQL.


Exemple : UPDATE table SET nom_colonne_1 WHERE selectors

La structure du sélecteur est une liste de JSON dont chacun doit comporter en clé, l’ID d’une colonne et en valeur, la valeur à fixer.
Si plusieurs couples clé/valeurs sont dans le même JSON, le résultat retourné sera l’intersection des conditions, c’est-à-dire que les conditions seront assemblées avec un “ET” logique.
À l’inverse, plusieurs JSON dans le sélecteur vous permettront de récupérer l’union de vos résultats, c’est-à-dire un “OU” logique.

Sélecteur simple

Pour récupérer l’ensemble des race de chats, j’utilise le sélecteur suivant:
"selectors":[{"f0_race":"Chat"}]
Cela revient à dire “Je récupère l’ensemble des lignes qui ont “Chat” dans la colonne race.”

Sélecteur “ET”

Pour récupérer l’ensemble des chats qui sont tatoués, j’utilise le sélecteur suivant :
"selectors":[{"f0_race":"Chat", "f2_tatouage":"true"}]
Cela revient à dire “Je récupère l’ensemble des lignes qui ont “Chat” dans la colonne race ET qui ont “vrai” dans la colonne Tatouage.

Sélecteur “OU”

Pour récupérer l’ensemble des chiens et des animaux qui s’appellent “Pantoufle”, j’utilise le sélecteur suivant :
"selectors":[{"f0_race":"Chien"},{"f1_nom":"Pantoufle"}]


Cela revient à dire “Je récupère l’ensemble des lignes qui ont chat dans la colonne race ainsi que l’ensemble des lignes qui ont “Pantoufle” dans la colonne “Nom”.”

La différence avec le sélecteur précédent est que l’on utilise deux JSON comportant une condition chacun plutôt qu’un seul comportant deux conditions : il en résulte un OU à la place d’un ET.

Les nouvelles valeurs (2️⃣ newValues)

“newValues” correspond à la partie qui fait suite au SET (dans le cadre d’un UPDATE) ou VALUES (dans le cadre d’un INSERT).


Exemple : UPDATE table SET newValues WHERE condition

"selectors": [
     {
       "f0_race": "Chat",
       "f1_nom": "Plume"
     }   
],
"newValues": {
      "f1_nom": "Chaussette"
}

Cela revient à dire “Je change le nom de tout les chats qui s’appelle “Plume” pour “Chaussette”.”

La/les colonne(s) que je souhaite sélectionner (3️⃣ colomnsToRetrieve)

“columnsToRetrieve” correspond à la partie qui précède SELECT.


Exemple : SELECT columnsToRetrieve FROM nom_du_tableau

"selectors": [
     {
       "f1_race": "Chat"
     }   
],
"columnsToRetrieve": {
      "f1_nom"
}

Cela revient à dire “Sélectionne toutes les noms des lignes où “Chat” est présent dans la colonne “Race”.

Les différentes méthodes

[POST] /table

Crée un nouveau référentiel métier.

Bon à savoir

Les id renseignés pour la création d’un référentiel métier ainsi que pour les colonnes ne seront pas pris en compte. Ils sont générés automatiquement et peuvent ne pas être renseignés dans le corps de la requête.

Dans le cas ci-dessous, nous les avons donc retirés.

{
  "name": "Liste d'entreprises",
  "fields": [
    {
      "name": "Nom de l'entreprise",
      "type": "TEXT"
    },
    {
      "name": "Nombre d'employés",
      "type": "NUMBER"
    }
  ]
}

Résultat :

[GET] /table/tables

Récupère tous les référentiels métiers et renvoie leurs structures/colonnes (nom, id, type).

Ne nécessite pas d’envoi d’arguments.

Résultat :

[{
    "name": "Liste d'entreprises",
    "id": 30,
    "fields": [
    {
       "name": "Nom de l'entreprise",
       "id": "f0_nomdelentreprise",
       "type": "TEXT"
     },
     {
       "name": "Nombre d'employés",
       "id": "f1_nombredemployes",
       "type": "NUMBER"
     }
   ]
},
{
    "name" : "Autre référentiel métier",
    "id": 31,
    ...
},
{
    "name" : "Encore un autre référentiel métier",
    "id": 32,
    ... 
}]

[GET] /table/{tableId}

Récupère le référentiel métier ayant pour ID celui transmis dans le path.

Résultat pour /table/30 :

{
  "name": "Liste d'entreprises",
  "id": 30,
  "fields": [
     {
       "name": "Nom de l'entreprise",
       "id": "f0_nomdelentreprise",
       "type": "TEXT"
     },
     {
       "name": "Nombre d'employés",
       "id": "f1_nombredemployes",
       "type": "NUMBER"
     } 
  ]
}

[DELETE] /table/{tableId}

Supprime le référentiel métier ayant pour ID celui transmis dans le path.

[PUT] /table/{tableId}/rows

Ajoute de nouvelles lignes au référentiel métier ayant pour ID celui transmis dans le path.

Bon à savoir

Si une colonne est absente lors de l’ajout d’une ligne, l’élément aura pour valeur “null”.

[
   {
     "f0_nomdelentreprise": "Entreprise A",
     "f1_nombredemployes": "10"
   },
   {
     "f0_nomdelentreprise": "Entreprise B",
     "f1_nombredemployes": "20"
   },
   {
     "f0_nomdelentreprise": "Entreprise C",
     "f1_nombredemployes": "30"
   },
   {
     "f0_nomdelentreprise": "Entreprise D",
     "f1_nombredemployes": "40"
   }
 ]

Résultat :

[GET] /table/{tableId}/rows

Récupère le contenu (toutes les lignes) du référentiel métier ayant pour ID celui transmis dans le path.

Résultat pour /table/30/rows :

[
   {
     "f0_nomdelentreprise": "Entreprise A",
     "f1_nombredemployes": "10"
   },
   {
     "f0_nomdelentreprise": "Entreprise B",
     "f1_nombredemployes": "20"
   },
   {
     "f0_nomdelentreprise": "Entreprise C",
     "f1_nombredemployes": "30"
   },
   {
     "f0_nomdelentreprise": "Entreprise D",
     "f1_nombredemployes": "40"
   } 
]

[POST] /table/{tableId}/rows

Met à jour le référentiel métier ayant pour ID celui transmis dans le path.
Seules les lignes qui correspondent à celles présentent dans le selectors seront impactées.

{
   "selectors": [
       {
           "f0_nomdelentreprise": "Entreprise A",
           "f1_nombredemployes": "10"
       },
       {
           "f0_nomdelentreprise": "Entreprise B",
           "f1_nombredemployes": "500"
       }
   ],
   "newValues": {
         "f0_nomdelentreprise": "Entreprise A ou B modifiée",
         "f1_nombredemployes": "60"
     }
}

Dans notre cas, seule “Entreprise A” est censée être modifiée puisqu’elle possède bien 10 employés alors que “Entreprise B” ne possède pas 500 employés.

Résultat :

[POST] /table/{tableId}/rows (UpdateAll)

Met à jour le référentiel métier ayant pour ID celui transmis dans le path.
Toutes les lignes seront impactées.

Bon à savoir

Les parties “selectors” et “columnsToRetrieve” du corps de la requête ne sont pas exploitées. Il n’est donc pas nécessaire de les renseigner, on peut même les supprimer.

{
   "newValues": {
     "f0_nomdelentreprise": "Entreprise Z"
   }
 }

On demande à ce que toutes les lignes de la colonne f0_nomdelentreprise aient désormais comme valeur “Entreprise Z”.

Résultat :

[PUT] /table/{tableId}/rows/delete

Supprime les lignes souhaitées dans la référentiel métier ayant pour ID celui transmis dans le path.

Bon à savoir

Les parties “newValues” et “columnsToRetrieve” du corps de la requête ne sont pas exploitées. Il n’est donc pas nécessaire de les renseigner, on peut même les supprimer.

Dans le cas ci-dessous, nous les avons donc retirés.

{
  "selectors": [
    {
      "f0_nomdelentreprise": "Entreprise D"
    }
  ]
}

On indique que l’on veut supprimer les lignes qui possèdent “Entreprise D” dans la colonne “Nom de l’entreprise”.

[POST] /table/{tableId}/rows/select

Sélectionne les éléments correspondants au sélecteur qui se trouve dans la colonne indiquée dans “columnsToRetrieve”.

Bon à savoir

La partie “newValues” du corps de la requête n’est pas exploitée. Il n’est donc pas nécessaire de la renseigner, on peut même la supprimer.

Dans le cas ci-dessous, nous l’ avons donc retiré.

{
  "selectors": [
    {
      "f1_nombredemployes": "20"
    },
    {
      "f1_nombredemployes": "30"
    }
  ],
  "columnsToRetrieve": [
    "f0_nomdelentreprise"
  ]
}

Résultat :

[DELETE] /table/{tableId}/rows

Supprime toutes les lignes du référentiel métier ayant pour ID celui transmis dans le path.

Updated on 17 décembre 2019

Was this article helpful?

Related Articles