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.
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 ?
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. âïž
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.
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 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 :
Plus facile Ă analyser avec du code.
Plus court.
Plus rapide à lire et à écrire pour les machines.
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 :
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â !
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 !