Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

eServices-Tp5: api management

1,825 views

Published on

Api management avec atom et anypoint

Published in: Technology
  • Download or read that Ebooks here ... ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

eServices-Tp5: api management

  1. 1. TP 5:API Management avec Atom et Anypoint(MuleSoft) Cours eServices - GL5 GL5 - 2015-2016
 TP 5 ESERVICES MME. LILIA SFAXI 1 Objectifs du TP Génération d’API avec Atom et le langage RAML, et gestion des API avec Anypoint Studio et le API Gateway de Mulesoft
  2. 2. I. Génération d’APIs avec RAML I.1 RAML RAML‑ (RESTful API Modeling Language) est un langage pour la définition d’API HTTP1 qui satisfont les exigences de REST. La spécification RAML est une application de la spécification YAML qui fournit des mécanismes pour la définition d’APIs RESTful. RAML est développé et supporté par un groupe de leaders en nouvelles technologie, provenant de plusieurs entreprises éminentes (Mulesoft, Airware, Akana, VMware, CISCO…). Leur but est de construire une spécification ouverte, simplet et succincte pour la description d’APIs. Ce groupe de travail contribue à la fois à la spécification RAML, ainsi qu’à un écosystème croissant d’outils autours de ce langage. I.2 Outil : API Workbench2 Pour écrire un document RAML de manière simple et intuitive, un outil de travail est fourni, sous la forme d’un plugin pour Atom , un éditeur de texte open source. Pour3 l’installer: • Télécharger et installer Atom: https://atom.io/ • Dans le menu Préférences, choisir l’option Packages, et taper dans la barre de recherche: api-workbench • Une fois le package installé, on devrait trouver dans le menu Packages, un nouvel élément API Workbench. I.3 Création d’un document RAML4 Dans ce qui suit, nous vous indiquons les étapes nécessaires pour créer un simple fichier RAML décrivant une API REST répondant aux recommandations décrites dans le cours. 1. Création d’une API RAML Pour créer un nouveau projet RAML, aller vers Packages -> API Workbench -> Create RAML Project . Indiquer : • Le répertoire de travail • Le titre de l’API : Par exemple Pet Shop • La version : v1 RAML: http://docs.raml.org/1 API Workbench: http://apiworkbench.com/2 Atom: https://atom.io/3 Ce tutoriel est issu de : http://apiworkbench.com/docs/4 TP 5 ESERVICES MME. LILIA SFAXI 2
  3. 3. • L’URI de base l’API : /petshop • Cocher uniquement Use RAML 1.0 Le projet obtenu aura l’allure suivante: 2. Ajout de Ressources et Méthodes • Sous l’onglet Palette de la rubrique Détails, cliquer sur Add new ressource pour ajouter une nouvelle ressource. • Appeler la ressource /pets • Sélectionner les méthodes get et post La ressource est désormais créée avec deux méthodes vides. 3. Remplir les corps et réponses des méthodes • Mettre le focus sur la méthode get: • Dans la Palette, cliquer sur Create new response • Garder le code 200 pour la réponse et cliquer sur OK • Une fois le code de la réponse généré, mettre le focus sur 200: • Cliquer sur Create new Response Body, puis dans la fenêtre qui apparait cliquer sur OK, pour générer une réponse de type par défaut application/json TP 5 ESERVICES MME. LILIA SFAXI 3 Structure du répertoire du projet Contenu du fichier principal Structure de l’élément sélectionné Détails et opérations sur l’élément sélectionné
  4. 4. • Pour la méthode post, générer directement un corps, en cliquant sur Create new body. Le résultat apparaît comme suit: 4. Ajouter des Sous-ressources Pour définir le reste des méthodes (put et delete), destinées à agir sur un élément unique de la ressource pets, et les associer à une sous-ressource: • Mettre le focus sur /pets • Cliquer sur Add new resource • Taper /{id} comme ressource URL, et sélectionner les méthodes put et delete. • Ajouter un body à put de type application/json • Ajouter une réponse à delete de type 204 5. Définir des types Pour définir le contenu des messages JSON manipulés, définir un type comme suit: • Dans une nouvelle ligne au dessus de /pets, taper ty, puis cliquer sur entrée • Appeler le type Pet, puis définir les propriétés name, kind et price, comme suit: TP 5 ESERVICES MME. LILIA SFAXI 4
  5. 5. • Définir Pet comme type pour le corps de la méthode post, en écrivant: type:Pet au dessous de application/json de la méthode post • Ajouter de même Pet comme type pour la méthode put, et Pet[] pour la méthode get. 6. Extraction d’un type de ressources Pour générer un type de ressources à partir d’une ressource existante: • Mettre le focus sur la ressource /pets • Cliquer sur Extract Resource Type • Taper Collection comme nom de type de ressource et déplacer les méthodes get et post de la fenêtre de gauche vers celle de droite • Un nouveau resourceType, appelé Collection, est créé, contenant les méthodes get et post comme elles ont été définies sous la ressource /pets. De plus, /pets est désormais de type Collection. • Répéter la procédure pour la ressource /{id}. On appellera le type Member 7. Ajout de paramètres au type de ressource Pour rendre le type de ressource créé générique, il serait plus intéressant de paramétrer le type de réponse. Pour cela: • Remplacer le terme Pet dans Collection et Member par <<item>>. • Corriger les erreurs qui s’affichent dans les ressources Collection et Member respectivement par { Collection: {item : Pet} } et { Member: {item : Pet} } 8. Ajout d’un exemple Pour ajouter un exemple d’animal, modifier le type Pet pour qu’il soit comme suit: TP 5 ESERVICES MME. LILIA SFAXI 5
  6. 6. 9. Définir des paramètres pour les méthodes Nous nous proposons d’ajouter une autre méthode de type get, qui définit plusieurs paramètres. • Sous type de /pets, taper: get: • Mettre le focus sur le get nouvellement créé • Cliquer sur Create new query parameter • Créer trois paramètres: ❖ priceLessThan de type number ❖ priceMoreThan de type number ❖ petKind, de type enum;[bird, mammal] • Il est possible d’extraire certains des paramètres comme Trait, c’est à dire un critère de filtrage. Pour cela, ❖ Mettre le focus sur le get; ❖ Cliquer sur Extract trait ❖ Nommer le trait FiltrableByPrice, et déplacer les méthodes priceLessThan et priceMoreThan vers la droite Vous remarquerez que les deux paramètres choisis ont été enlevés de la méthode get, et remplacés par is: FilterableByPrice. 10.Extraction de la librairie Pour extraire les types définis et les représenter dans une entité réutilisable: • Mettre le focus en dehors de toutes les structures, par exemple sur title • Cliquer sur Extract Library • Appeler la librarie PetTypes • Déplacer Pet, Collection et Member vers le panel de droite • Cliquer sur Extract Un nouveau fichier contenant les trois types sélectionnés a été créé, puis inclus comme référence dans notre fichier principal. I.4 API Management avec Anypoint Studio 1. Anypoint Platform Anypoint est une plateforme développée par l’entreprise Mulesoft qui offre les outils5 nécessaires pour la gestion d’APIs. Anypoint est classée par Gartner dans son Magic Quadrant dans la rubrique “Application Services Governance” d’Avril 2015 parmi les leaders du marché du API Management. Anypoint Platform: https://www.mulesoft.com/platform/enterprise-integration5 TP 5 ESERVICES MME. LILIA SFAXI 6
  7. 7. 2. Première Application Une fois Anypoint Studio téléchargé et installé, créer un nouveau projet, qu’on appellera6 Premiere Application, et choisir Mule Server comme Runtime Environment. La fenêtre obtenue a l’allure suivante: Anypoint Studio: https://docs.mulesoft.com/mule-fundamentals/v/3.7/download-and-launch-anypoint-6 studio TP 5 ESERVICES MME. LILIA SFAXI 7 Structure du projet Canevas pour construire le flux de traitement en faisant un glisser déplacer des composants Palette des composants graphiques à intégrer Propriétés des composants sélectionnés dans le canevas
  8. 8. Nous allons commencer par créer une simple application qui affiche un message dans un navigateur. À partir de la palette, glisser-déplacer les éléments graphiques suivants dans le canevas: • HTTP Connector: permet de se connecter aux ressources web via HTTP ou HTTPS. • Set Payload Transformer: Modifie le message affiché (payload) en “Hello World!”. Votre flux aura l’allure suivante: Configurer votre HTTP Connector: • Ajouter une nouvelle Connector Configuration • Garder les options par défaut. Votre hôte se lancera à l’URL 0.0.0.0:8081 Configurer le composant Set Payload. Remplacer pour cela la valeur de l’élément Value par Hello World! Lancer votre application : Run -> Run As -> Mule Application. La console devrait afficher un message comme suit: Dans un navigateur, taper l’adresse: 0.0.0.0:8081. Le message suivant devrait d’afficher: TP 5 ESERVICES MME. LILIA SFAXI 8
  9. 9. 3. Gestion des APIs avec APIKit APIKit est un toolkit open source spécialement créé pour faciliter l’implémentation d’APIs REST, en renforçant les bonnes pratiques de création d’APIs. L’exemple suivant est tiré de la documentation officielle de Mulesoft (https:// docs.mulesoft.com/anypoint-platform-for-apis/apikit-tutorial). Elle suppose que Anypoint Studio est installé et un API Gateway configuré (voir la section Download and Install the Gateway Runtime du tutoriel). Nous allons utiliser un fichier RAML prédéfini api.raml (téléchargé ici: https:// docs.mulesoft.com/anypoint-platform-for-apis/_attachments/api.raml). a. Nouveau Projet de API Management Créer un nouveau projet qu’on appellera API Project: • Choisir comme environnement d’exécution le API Gateway que vous avez installé • Cocher la case Add APIKit components et entrer le fichier RAML que vous avez téléchargé. Un nouveau projet sera créé avec le fichier api.raml ajouté sous le répertoire src/main/ api, ainsi que des flux de gestion des différentes méthodes ajoutées par défaut dans le canevas. Vous retrouverez notamment: TP 5 ESERVICES MME. LILIA SFAXI 9
  10. 10. b. Configuration du flux principal • Dans les propriétés du HTTP Connector, définir: ★ Host: localhost ★ Port: 8081 ★ Base Path: /remote-vending c. Lancement du projet Lancer le projet comme Mule Application. Une APIKit Console s’affiche : Flux Description Figure api-main Flux principal, définissant un point d’accès HTTP, un routeur APIKit une référence à une stratégie d'exception action:/ ressource: apiConfig Un Backend flow pour chaque paire de ressource/action dans le fichier RAML. Par exemple, get:/sales:apiConfig représente l’action get de la ressource sales Exception Strategy Mapping Flux fournis par Studio pour configurer les messages d’erreur dans un format HTTP-status-code-friendly ! TP 5 ESERVICES MME. LILIA SFAXI 10
  11. 11. Pour tester votre API, cliquer par exemple sur le bouton GET devant la ressource /sales. la Console affichera alors la réponse (une liste de sales), qui a été définie comme exemple dans le fichier RAML de départ. TP 5 ESERVICES MME. LILIA SFAXI 11
  12. 12. Pour visualiser le résultat sur le navigateur, taper le chemin de la requête comme suit: http://localhost:8081/remote-vending/api/sales Une réponse JSON s’affichera: 4. Mapping d’une API avec une base de données en backend Nous allons tester un exemple simple pour mapper l’API que nous avons défini à une table de la base de données, par exemple pour la méthode get de la ressource sales. a. Création de la base de données Dans l’exemple, j’utilise MYSQL pour créer la base de données, mais vous pouvez choisir le SGBD de votre choix. Nous allons commencer par créer la base de données vendingMachineAPI, dans laquelle nous allons créer une table sales comme suit: create table sales(id int primary key,date Date, value int, machineID text, productID text); Insérer dans la table sales un enregistrement, comme suit: insert into sales values (1, '15/12/08', 100, '2', '3'); b. Création du flux de lecture Pour définir un flux de lecture à partir de la base de données pour la méthode GET de la ressource sales, modifier le flux get:/sales:api-config comme suit: • Supprimer le composant Set Payload défini par défaut • Insérer deux composants Database et Transform Message de manière à obtenir le flux suivant: TP 5 ESERVICES MME. LILIA SFAXI 12
  13. 13. c. Configuration de la base de données Pour configurer le composant Database: • Ajouter une nouvelle Connector configuration • Choisir MySQL Configuration • Remplir les champs pour la configuration de votre base de données. Par défaut: ★ Host: localhost ★ Port: 3306 ★ User: utilisateur_de_mysql ★ Password: mot_de_passe_de_mysql ★ Database: vendingMachineAPI • Ajouter le driver MySQL (fourni par votre enseignante) • En revenant sur la fenêtre des propriétés du composant Database, choisir l’opération SELECT • Taper ensuite la requête: select * from sales; d. Mapping de la requête avec la réponse JSON Pour mapper les enregistrements lus à partir de la base de données avec la réponse JSON retournée par la méthode GET, il faut configurer le composant de mapping Transform Message. Dans les propriétés de ce composant, on retrouvera les formats des deux parties à mapper: la table de la base de données, ainsi que le schéma JSON à retourner: TP 5 ESERVICES MME. LILIA SFAXI 13
  14. 14. Pour associer le contenu de la table avec le format de retour, glisser-déplacer chacun des éléments de la table sales avec l’élément correspondant du schéma JSON. e. Résultat Lancer le projet. Dans la console, cliquer sur Get de la ressource /sales. Ce qui s’affiche ici comme résultat représente les exemples fournis dans le fichier RAML, pas le contenu de la base. Pour afficher le résultat de lecture à partir de la base vendingMachineAPI, cliquer sur Try it en haut à droite de la fenêtre, puis sur GET. Le résultat suivant devrait apparaître: TP 5 ESERVICES MME. LILIA SFAXI 14

×