fabernovel loader

Apr 1, 2019 | 7 min de lecture

Tech

Hypermedia et sémantique dans les APIs : un mix puissant

Antoine Chéron

Developer


FABERNOVEL TECHNOLOGIES
Enrichies d’hyperliens et de sémantique, les APIs nous permettent de créer des applications impressionnantes. Les assistants intelligents et auto-évolutifs, ainsi que la génération de tests fonctionnels et de performance, en sont des exemples. Dans cet article, nous vous montrons les usages que l’on peut faire des APIs Semantic REST.

Cet article est le quatrième de notre série sur les APIs Semantic REST. Précédemment, nous vous présentions ce que l’utilisation d’hyperliens dans les APIs apporte. Puis nous avons dédié un billet à l’intérêt qu’a l’ajout de sémantique dans les APIs. Tous deux apportent des solutions à des problématiques différentes, réduisant le couplage technique et offrant de nouvelles possibilités.

Vous vous demandiez peut-être quand la notion Semantic REST allait arriver ? Nous y sommes, API hypermedia + sémantique = Semantic REST. Découvrez ici les nouvelles possibilités que cela nous offre.

Des super-APIs qui offrent des super-possibilités !

Une API Semantic REST fournit des hyperliens dans ses réponses et décrit sémantiquement les données et métadonnées qu’elle fournit. Ces métadonnées incluent toute la documentation de l’API. C’est à dire la description de toutes ses ressources, leurs opérations et hyperliens, mais aussi des aspects techniques, comme les mécanismes d’authentification, les conditions de service, le nombre de requêtes autorisées par jour, etc.

Voyons ensemble concrètement ce que nous pouvons faire à partir de ces APIs à la documentation particulièrement riche et interprétable par la machine.

Générer des interfaces graphiques pour interagir avec n’importe quelle API

Avec la sémantique, nous pouvons déterminer comment afficher l’information retournée par l’API. Par exemple, s’il faut plutôt utiliser le nom d’une personne ou le titre d’un événement comme titre de la page. Ou encore s’il faut présenter un tableau pour des résultats financiers ou des cartes pour les produits d’un site de e-commerce.

Cependant, la sémantique ne nous donne aucun lien, impossible de naviguer dans la page donc. C’est là que la présence d’hyperliens dans l’API offre un complément intéressant. Si l’on a affiché des articles à vendre, les hyperliens nous permettent de rediriger l’utilisateur vers la page produit lorsqu’il clique sur la carte. Ou vers l’article, si ce sont des cartes présentant les articles d’un blog que nous avons affiché.

Lorsque l’on mixe hypermedia et sémantique, la machine peut aussi identifier de quel type sont les liens : est-ce qu’ils indiquent la suite d’un processus (un processus de commande par exemple) ? Ou bien un lien vers une information complémentaire ? Vers le détail de l’élément ? Vers une autre page quelconque ? Grâce à cette information, nous pouvons générer tout le site web, sans qu’il n’ait de connaissance préalable de l’API.

Qu’y gagne-t-on ? En tant que développeur, plus besoin de créer des frontends de démo pour présenter à vos clients les fonctionnalités créées. Le gain de temps est significatif et vous pouvez vous concentrer sur la qualité de l’API. En tant que non-développeur : vous voilà capable d’interagir avec n’importe quelle API (Semantic REST). Plus besoin d’un développeur pour vous aider. Ouvrez ce site web générique, entrez l’URL de l’API qui vous intéresse et vous pourrez vous en servir.

Identifier et exécuter les opérations qui rendront une action disponible (spoiler : c’est ça qui rendrait les assistants vraiment intelligents)

Si vous êtes développeur, on vous a probablement déjà demandé d’intégrer une fonctionnalité d’une API. Vous l’avez trouvée, vous avez essayé de l’interroger et là … ça ne marche pas. Il fallait appeler d’autres services de l’API auparavant, pour la rendre disponible. Mais lesquels ? Il ne vous restait plus qu’à passer quelques heures dans la documentation pour le découvrir. Pénible.

Si vous n’êtes pas développeur, peut-être que l’on vous a déjà dit “hey, tu peux faire ça sur ce site, vas-y c’est super cool”. Vous arrivez sur le site, la fonctionnalité est introuvable. Il fallait toucher aux paramètres du site et ajouter quelques informations à votre profil pour l’activer. Pénible.

Grâce à l’hypermedia et la sémantique nous pouvons nous affranchir de cela. La sémantique nous permet de dire à la machine ce que nous voulons faire, comme réserver une voiture de location. Ensuite, cette combinaison d’hyperliens et de sémantique permet à la machine de parcourir les services de l’API et d’identifier toutes les étapes préliminaires à la réalisation de votre demande. Il ne vous reste plus qu’à lui donner les informations qu’elle vous demande, par exemple de quoi créer un compte sur le site de réservation de voitures et l’accord pour leur envoyer votre permis de conduire. Une fois cela réalisé, la voiture est réservée. Le tout orchestré par la machine à qui vous avez simplement demandé “réserve moi une voiture de location pour ce WE”.

Tout cela peut aussi bien se faire par écrit qu’oralement. Voilà pourquoi bots textuels et assistants vocaux pourraient devenir plus intelligents. Pour rappel, aujourd’hui, ils sont spécifiquement programmés pour exécuter des scénarios avec des APIs préalablement intégrées.

Générer des tests de performance

Tester les performances de son API, c’est tester le nombre de requêtes que le serveur peut accepter par unité de temps sur trois plans : (i) en lecture, sur un ou plusieurs services, (ii) en écriture sur un ou plusieurs services et (iii) selon des scénarios représentatifs de l’utilisation de l’API par ses utilisateurs.

La combinaison de l’hypermedia et de la sémantique permettent à la machine de découvrir les scénarios d’utilisation possibles d’une API. Cela parce qu’elle sait composer et enchaîner les opérations ainsi que découvrir les étapes nécessaires à la réalisation d’un processus métier. Ensuite, elle peut les exécuter, notamment grâce aux hyperliens fournis.

Nous pensons qu’une intervention humaine restera nécessaire pour sélectionner les scénarios d’utilisation pertinents. Tout le reste peut être en revanche automatisé.

Générer des tests fonctionnels

Les tests fonctionnels vérifient qu’une fonctionnalité complète se comporte comme prévu. Par exemple, la création d’un compte sur un site, avec lequel il est ensuite possible de se connecter.

Grâce à la sémantique vous pourriez décrire la fonctionnalité attendue. Ensuite, en parcourant la documentation de l’API, la machine pourra identifier la suite d’opérations à enchaîner pour produire cette fonctionnalité. L’hypermedia lui servira à savoir si ce qu’elle a fait a bien rendu disponible l’opération désirée.

En s’inspirant du Property-Based Testing nous pourrions automatiquement tester l’API avec un très large éventail de valeurs aléatoires. Cela nous permet d’identifier avec quelles valeurs l’API fonctionne ou non.

Par ailleurs, nous pourrions aussi tester les régressions fonctionnelles. C’est à dire, quand est-ce qu’une fonctionnalité a été cassée suite à une mise à jour. Pour générer les tests, seule la fonctionnalité a besoin d’être décrite, sans sa correspondance technique. C’est la machine qui découvre cette dernière. Alors, si l’API change, la machine découvrira la nouvelle manière de réaliser la fonctionnalité. Si du code avait été écrit pour faire ce test, il aurait fallu le modifier.

Obtenir une vue enrichie d’une ressource

Nous pouvons parler de vue enrichie d’une ressource lorsque l’on complète les informations que l’on a sur la ressource avec de l’information venant d’autres sources/APIs, internes ou externes.

Si l’on a une API JSON, c’est impossible parce qu’elle ne contient pas de lien. Il n’est alors pas possible pour la machine d’aller récupérer davantage d’information.

Si une API envoie une réponse qui contient des hyperliens, on peut alors les suivre, récupérer la donnée vers laquelle pointent ces liens et agréger le tout dans un unique document ou une unique vue.

La sémantique nous permet de compléter intelligemment la donnée, par plusieurs moyens. Par exemple en évitant les doublons, car nous pourrons identifier que deux liens pointent vers le même type d’information. Ou encore en évitant de récupérer des informations indésirables, comme la description d’une opération d’API qui permettrait de modifier la ressource, ce qui n’est pas un complément d’information sur la ressource observée.

Conclusion

Comme nous vous l’avons illustré dans cet article, la précision des métadonnées fournies par les APIs Semantic REST permet de créer de nouveaux outils de génération très puissants et de rendre plus précis et performants des outils déjà existants. Grâce à ces derniers, nous pourrions gagner un temps précieux dans nos développements.

Ces exemples nous montrent aussi à quel point le couplage entre APIs et clients d’APIs pourrait être réduit. Le métier et la sémantique deviennent ainsi le cœur du système informatique.

Le champ des possibles ouvert par ces APIs ne se limite pas aux exemples que nous vous avons présenté. Nous sommes impatients de voir ce que produira l’imaginaire des personnes qui se pencheront elles aussi sur le sujet. Et après tout, pourquoi pas vous ?

La semaine prochaine, nous vous présenterons les technologies qui permettent de créer de telles APIs et quelques outils qui pourraient vous aider à les choisir facilement.

Cet article appartient à une enquête
logo business unit

FABERNOVEL TECHNOLOGIES

150 talents pour répondre aux défis technologiques de la transformation digitale.

à lire