Utilisez les ressources et collections REST

Maintenant que vous savez que les API REST servent d’intermĂ©diaires et aident les dĂ©veloppeurs Ă  manipuler des donnĂ©es, regardons de plus prĂšs Ă  quoi ressemblent rĂ©ellement ces donnĂ©es.

ApprĂ©hendez les donnĂ©es REST via l’utilisation des ressources

Les donnĂ©es REST sont reprĂ©sentĂ©es dans ce qu’on appelle des ressources. 

Une ressource peut ĂȘtre tout type d’objet nominal (on lui attribue un nom) que vous pouvez utiliser pour reprĂ©senter les donnĂ©es dans votre application. Vous savez, une personne, un lieu, ou autre chose ! 😉 Pour faire simple, voyez les ressources comme des boĂźtes dans lesquelles vous rangerez des objets par catĂ©gorie et sur lesquelles vous collez une Ă©tiquette pour savoir quoi mettre dedans.

Vous trouvez que c’est abstrait ? C’est le but, afin que vous puissiez reprĂ©senter n’importe quel Ă©lĂ©ment de donnĂ©e sous la forme que vous souhaitez.

Chaque ressource comporte des informations supplĂ©mentaires sur les donnĂ©es contenues. Si on prend l’exemple d’une application qui liste les hĂ©ros Marvel, une des ressources pourrait ĂȘtre Superhero et on pourrait avoir par exemple un nom, une description, etc., comme information supplĂ©mentaire. 

Les ressources sont regroupĂ©es dans un groupe que l’on appelle une collection. On s’y rĂ©fĂšre avec la forme au pluriel du nom de la ressource. Par exemple une ressource superhero donnerait superheroes.

Imaginons que vous crĂ©ez une API pour qu’une boutique de skateboards ait un service de livraison en ligne. Ce que vous voulez, c’est que d’un cĂŽtĂ© vos clients puissent acheter des skateboards sur le site web, et de l’autre que vos salariĂ©s puissent ajouter des produits et mettre l’inventaire Ă  jour.

Procédons étape par étape et déterminons ensemble les ressources, leurs informations supplémentaires et les collections.

Pour une boutique de skateboards, vos ressources pourraient ĂȘtre :

  • Client ;

  • Staff ;

  • Basket (panier) ;

  • Skateboard ;

  • Inventory (inventaire).

Une ressource Skateboard pourrait comporter comme informations supplémentaires : nom,  marque, id,  prix.

Vos collections seraient donc :

Ressource

Collection

skateboard

skateboards

client

clients

Bien ! Nous avons nos collections ainsi que les ressources correspondantes et leurs informations supplĂ©mentaires. Continuons avec notre exemple de boutique de skateboards et suivons ensemble le parcours de la requĂȘte d’un client via notre API.

Quand un client achĂšte un skateboard en utilisant votre application web, cela donne :

  • votre API envoie la requĂȘte du navigateur (le client) aux serveurs de l’application pour l’achat d’un skateboard ;

  • la requĂȘte met Ă  jour l’inventaire pour qu’il y ait un skateboard de moins ;

  • la requĂȘte met Ă  jour l’historique de commandes du client pour ajouter le skateboard Ă  son historique d'achats.  😁

Super ! Vous savez maintenant comment et sous quelle forme stocker les donnĂ©es que vous voulez utiliser dans votre API via des ressources et des collections. Mais du coup, comment pouvez-vous y accĂ©der  ? Comment savoir oĂč les rĂ©cupĂ©rer, ces donnĂ©es ?

URI et Endpoints

Le path (ou chemin) que vous donnez Ă  votre API lui permet de savoir exactement oĂč se trouvent les donnĂ©es que vous voulez rĂ©cupĂ©rer. Vous pouvez imaginer cela comme le fait de parcourir vos propres fichiers sur votre ordinateur. Vous devez aller de dossier en dossier pour trouver vos donnĂ©es, et chaque photo ou document que vous sauvegardez a son propre path, ou chemin de fichier, en français. Par exemple, votre photo de sĂ©rie prĂ©fĂ©rĂ©e pourrait se trouver au bout de ce path :

MyComputer/Images/Series/gameofthrones.jpg

Les API REST stockent également les données de façon similaire, et un URI constitue le chemin pour y arriver.

Si une ressource est l’objet qui stocke vos donnĂ©es, pour les rĂ©cupĂ©rer vous allez avoir besoin d’un identifiant de ressource uniforme, ou URI pour Uniform Resource Identifier. L’URI est le moyen d’identifier votre ressource, comme une Ă©tiquette.

Imaginons que vous crĂ©ez une API pour un site web qui prĂ©senterait toutes les informations de Game of Thrones, que ce soit sur le livre ou la sĂ©rie. L’URI qui listerait tous les personnages pourrait ĂȘtre la suivante :

/characters

Si vous voulez voir les informations sur un seul personnage, qui porte l’ID 123, votre URI serait le suivant :

/characters/123

Tout comme les paths pour les fichiers, les URI peuvent avoir des ressources imbriquées. Si vous voulez obtenir uniquement le nom du personnage qui vous intéresse, votre URI pourrait ressembler à ceci :

/characters/123/description

Wouhou ! VoilĂ  du progrĂšs ! Le souci, c’est que sans l’adresse rĂ©elle du site web, l’API ne saura pas du tout oĂč chercher l’URI pour commencer ! C’est lĂ  que les endpoints (ou points de terminaison, en français) interviennent !

Un endpoint est une URL/URI qui fait partie d’une API. Si un URI est comme un chemin de fichier, alors un endpoint est comme l’adresse complĂšte du fichier. Il vous suffit d’ajouter votre nom de domaine au dĂ©but de votre URI, et vous avez un endpoint  ! Par exemple, si le nom de domaine de notre app est gameofthrones-informations.com, nous aurons :

https://gameofthrones-informations.com/characters

Houla, attends deux secondes, c’est quoi la diffĂ©rence entre URI et URL ?

Toutes les URL sont des URI, mais toutes les URI ne sont pas des URL đŸ€Ż. L’URI permet d’identifier une ressource tandis que l’URL permet de la localiser.

On confond souvent les deux. On va tout simplifier avec un exemple ! Reprenons notre site de Game of Thrones. Si le personnage de Jon Snow a pour ID 890, alors l’URI serait  /characters/890. L’URL serait  https://gameofthrones-informations.com/characters/890

L’URL de la requĂȘte est l’endpoint complet que vous utilisez pour votre requĂȘte. Il associe le nom de domaine + le path de votre ressource. À prĂ©sent, vous savez comment accĂ©der aux donnĂ©es que vous souhaitez ! 

Au fait, pas besoin de crĂ©er votre propre API de GoT – il en existe dĂ©jĂ  une et vous pouvez la dĂ©couvrir ici : anapioficeandfire.com. ⚔

Distinguez XML et JSON

Une fois que vous avez le bon endpoint sur lequel faire votre requĂȘte, il est temps pour vous d’obtenir vos donnĂ©es ! C’est lĂ  que vous obtenez les informations sur les ressources que vous avez créées.

Le terme données est un terme général qui décrit toute information envoyée ou reçue, tandis que que le terme ressource décrit plus précisément les éléments qui sont contenus dans cette information.

Les donnĂ©es des API REST peuvent utiliser deux langages : XML et JSON. Si une API renvoie un set de donnĂ©es en XML ou en JSON, le contenu restera le mĂȘme, mais la forme change. Le format de donnĂ©es est diffĂ©rent.

Le XML

En XML, chaque élément de donnée a une balise ouvrante et une balise fermante qui peut également avoir des balises imbriquées :

<series>
  <serie>    <titre>Game Of Thrones</titre>
    <realisateur>Random</realisateur>
  </serie>
       <serie>    <titre>Peaky Blinders</titre>    
<realisateur>Random</realisateur>  </serie>
</series>


<series>
  <serie>
     <titre>Game Of Thrones</titre>
     <realisateur>Random</realisateur>
  </serie>
  <serie>
     <titre>Peaky Blinders</titre>
     <realisateur>Random</realisateur>
  </serie>
</series>

Vous pouvez voir une balise ouvrante pour la collection en haut – series – entre crochets < >. La balise fermante Ă  la fin est identique, sauf qu’on y ajoute une barre oblique / au dĂ©but :  </series>  , qui indique que c’est une balise fermante. Chaque ressource listĂ©e a la balise ouvrante  <serie>  et la balise fermante  </serie>  . Au sein de chaque ressource se trouvent davantage d’informations, comme "titre" et "rĂ©alisateur".

Le JSON

Le JSON stocke les données sous un format de clé-valeur avec comme clé le type de données, suivi de deux points : , suivi de la valeur de la donnée. Les données JSON sont entourées d'accolades { }, et chaque paire clé-valeur est envoyée comme chaßne de caractÚres avec des guillemets autour "". 

Ce qui nous donne ceci :

{ "titre" :"Game of Thrones"}

Les tableaux, ou listes, en JSON sont entourĂ©es de crochets []. L’exemple ci-dessous montre comment une liste complĂšte peut ĂȘtre considĂ©rĂ©e comme la valeur de la clĂ© "series". Les mĂȘmes donnĂ©es en XML ci-dessus seraient reprĂ©sentĂ©es ainsi en JSON :

{ "series": [
  {   "titre": "Game Of Thrones",
    "realisateur": "Alan Taylor" },  {   "titre": "Peaky Blinders",
    "realisateur": "Otto Bathurst" }  ]
}

Le JSON est généralement considéré comme :

  1. Plus facile Ă  analyser avec du code.

  2. Plus court.

  3. Plus rapide à lire et à écrire pour les machines.

  4. TrÚs "léger" et efficace grùce à sa structure en arborescence et sa syntaxe simple.

Voici quelques exemples d’API rĂ©elles qui renvoient du JSON et du XML :

  • Penguin Random House : XML

  • Potter API : JSON

Comme vous pouvez le constater, le JSON est le langage de donnĂ©es le plus utilisĂ© ; c’est pour cette raison que nous l’utiliserons dans le reste de ce cours  !

En résumé

  • Une ressource est un objet de type nominal utilisĂ© pour sauvegarder des donnĂ©es dans une API.

  • Une ressource peut contenir des informations supplĂ©mentaires.

  • Les ressources sont regroupĂ©es en collection et sont nommĂ©es au pluriel.

  • Vous pouvez accĂ©der aux ressources dans les API avec des URI.

  • Les donnĂ©es REST peuvent ĂȘtre en langage JSON ou XML, mais le JSON est le plus courant.

Et maintenant, revenons sur tout ce que nous avons appris avec le quiz de cette premiĂšre partie.

Une fois que vous aurez terminé ce quiz, je vous retrouve dans la seconde partie, dans laquelle nous allons sauter dans le grand bain et utiliser une API !

Ever considered an OpenClassrooms diploma?
  • Up to 100% of your training program funded
  • Flexible start date
  • Career-focused projects
  • Individual mentoring
Find the training program and funding option that suits you best