Consommez des services REST avec des actions Microflow natives | Mendix

Passer au contenu principal

Consommez des services REST avec des actions Microflow natives

Mendix La version 6.6 contient une nouvelle fonctionnalité majeure qui vous aidera à appeler les services REST et à gérer les données. Elle était initialement prévue pour Mendix 7, mais comme notre communauté est tellement enthousiaste à propos de cette fonctionnalité, nous avons décidé de la publier maintenant !
Avec notre nouvelle version, vous pouvez appeler des services REST avec une nouvelle action microflow. Étant donné que les réponses REST sont souvent au format JSON, nous avons étendu nos documents de mappage de données pour gérer JSON ainsi que XML.

REST et Internet

L'idée derrière le REpresentational State Transfer (REST) ​​est très proche de l'architecture initiale d'Internet : le protocole HTTP (HyperText Transfer Protocol). HTTP a été conçu pour transférer du contenu d'un serveur vers un client et vice versa. Au début, le contenu était souvent textuel et sous forme de HTML (HyperText Markup Language). Le contenu était stocké sur un serveur et était identifié de manière unique par une adresse : une URL (Universal Resource Locator). Par exemple, en tapant l'URL dans un navigateur, vous pouviez obtenir une page Web. Vous pouvez également publier des données sur une URL lorsque vous téléchargez un fichier sur un serveur.
Si vous généralisez cette idée initiale, vous pouvez comprendre la signification de REST. Il y a 6 éléments essentiels :

  • ÉtatIl s'agit d'une ressource sur un serveur, stockée dans un format interne. Par exemple : données produit dans une base de données.
  • Représentation. Toutes les données du serveur ne sont pas pertinentes. Il est souvent nécessaire de les filtrer et de les soumettre dans un format général compréhensible par le client. Une représentation des données est envoyée sur Internet. Les représentations les plus courantes sont XML, JSON, HTML ou des données binaires telles qu'une image ou un fichier PDF.
  • URL. Adresse unique d'une ressource.
  • Méthode. Un verbe textuel dans une requête HTTP pour indiquer ce que vous voulez faire avec la ressource. Par exemple : GET une ressource, POST une nouvelle ressource, PUT une ressource mise à jour, PATCH une ressource pour faire de petits changements ou DELETE une ressource. Ce verbe est énoncé littéralement dans le message HTTP.
  • En-têtesLes en-têtes HTTP fournissent des informations supplémentaires à un message. Par exemple, Content-Type: application/json précise que la représentation du message est au format JSON.
  • Code d'état. Un simple numéro ajouté à un message de réponse HTTP. Par exemple : 200 signifie OK, 404 signifie Resource not found.

Exemple : Animalerie

Un exemple simple pour commencer à utiliser REST est Petstore de Swagger. Il s'agit d'un exemple REST public où n'importe qui sur Internet peut soumettre les descriptions de ses animaux de compagnie et voir les animaux de compagnie des autres.

  • GET https://petstore.swagger.io/v2/pet/100 returns a pet.
  • POST https://petstore.swagger.io/v2/pet adds a new pet to the store.
  • DELETE https://petstore.swagger.io/v2/pet/101 deletes a pet.

Dans l' Mendix Modeleur, vous pouvez ajouter un Appeler l'action REST à un microflux. Vous pouvez spécifier l'emplacement (URL), la méthode HTTP et les en-têtes HTTP. Voir l'image ci-dessous :

Microflux

En effectuant une requête GET sur l'URL ci-dessus, nous obtenons une représentation d'un animal de compagnie avec l'ID 100 au format JSON. Dans un en-tête HTTP, nous spécifions que nous acceptons JSON dans la réponse :

en-têtes d'appel de repos

Notez que n'importe qui peut POSTER ses animaux de compagnie pour swagger, donc si quelqu'un d'autre a mis un monstre dans l'animal, vous pouvez essayer un autre numéro. Si quelqu'un a SUPPRIMÉ l'animal, vous pouvez rapidement le restaurer en allant sur https://petstore.swagger.io/#!/pet/addPet, cliquez sur la valeur d'exemple, puis cliquez sur « Essayez-le ! » ; cela ajoutera un animal de compagnie par défaut avec l'ID 100. Ou bien sûr, vous pouvez POSTER vous-même un animal de compagnie avec le Appeler l'action Rest (voir la dernière section de ce blog).

Extraits JSON et extraction de schéma

Le format JSON est une représentation d'un animal de compagnie dans un langage qu'une machine peut comprendre. Nous avons facilité la transformation de la réponse JSON en Mendix objets, par exemple pour afficher les informations sur un Mendix page générée. Les services REST sont souvent accompagnés d'une documentation qui montre comment les données vous sont renvoyées. La documentation de Pet Store est accompagnée d'un exemple d'extrait JSON (voir https://petstore.swagger.io/#!/pet/getPetById avec le type de contenu de réponse application/json).

{"id":100,"category":{"id":0,"name":"test"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"}

Si vous collez cet extrait dans un Mendix Document « Structure JSON » (cliquez Format et Refresh), Mendix extraira la structure des données renvoyées :

Structure Json

Mappages

La structure extraite est utilisée dans un Importer la cartographie document. Le mappage spécifie essentiellement comment les données JSON entrantes doivent être traduites en Mendix objets. Les mappages sont un outil unique dans Mendix et très puissant pour transformer JSON ou XML en entités que vous pouvez utiliser. L'exemple pet est relativement simple, mais dans d'autres services, les représentations peuvent devenir assez complexes. L'outil de mappage dans Mendix permet de gérer la complexité des données de manière très intuitive.

Sélectionner des éléments

  • Vous pouvez facilement sélectionner les éléments du schéma que vous souhaitez utiliser dans votre application. Vous n'avez pas besoin de polluer votre modèle de domaine avec des structures de données que vous ne souhaitez pas utiliser.

ImportMapping

  • Vous pouvez glisser-déposer des entités sur le mappage et elles seront automatiquement couplées aux données entrantes.
  • Si vous souhaitez personnaliser la manière dont les données entrantes sont traduites en Mendix objets, vous pouvez le faire en couplant un microflux au mappage. Vous pouvez choisir de mettre à jour les objets existants ; il vous suffit de sélectionner un attribut qui doit être utilisé pour trouver l'objet (clé).
  • Vous pouvez générer des entités et des associations pour le JSON en cliquant sur un bouton Cartographier automatiquement. Vous n'avez pas besoin de les créer manuellement. Mais vous êtes bien sûr libre d'apporter des modifications ou d'exploiter votre modèle de données existant. Par exemple, vous pouvez créer des entités persistant dans le modèle de domaine afin que les objets puissent être directement lus depuis la base de données dans une grille de données sur une page.

En vous exerçant avec les mappages, vous apprécierez la facilité avec laquelle vous pouvez gérer des structures de données complexes en quelques clics de souris.

Utilisez les mappages directement dans votre appel REST

Vous pouvez facilement coupler un mappage de données à votre appel REST. En suivant notre exemple d'animal de compagnie : tout animal de compagnie reçu du service sera mappé à une entité PET. Vous n'avez pas besoin d'écrire d'expressions complexes pour faire cela, tout est géré par notre mappeur visuel.
repos-appel-réponse
Nos documents de mappage prennent également en charge le format XML. Si vous recevez des données textuelles dans un autre format que JSON ou XML, vous pouvez stocker le résultat dans une variable de chaîne, afin de pouvoir l'analyser ultérieurement dans votre microflux. Si votre appel REST répond avec des données binaires, telles qu'une image ou un fichier PDF, nous vous permettrons de les stocker dans un FileDocument or Image objet. La prise en charge des représentations binaires sera ajoutée dans une version ultérieure de Mendix.

Envoyer des animaux de compagnie à l'animalerie

Dans notre exemple de cartographie, nous nous sommes concentrés sur la manière de GET un animal de compagnie et une carte vers des entités. D'autres méthodes HTTP sont également prises en charge : par exemple, POST et PUT: ils vous demandent de créer un message à envoyer au serveur (le message contient une représentation de l'animal que vous souhaitez envoyer). Nos documents de mappage d'exportation prennent également en charge la conversion Mendix objets en JSON ou XML. Ils ressemblent aux mappages d'importation, mais bien sûr, les flèches sont inversées ! Et vous pouvez réutiliser tous les documents de structure JSON que vous avez créés dans votre projet, pour éviter d'avoir à effectuer un travail répétitif. Pour les requêtes très simples, vous pouvez également utiliser un modèle de chaîne pour créer le message HTTP. Essayez de coller cet extrait JSON dans un POST demande à https://petstore.swagger.io/v2/pet :

{"id":100,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":available"}


demande d'appel de repos

Conclusion

En tant que développeur d'applications, vous ne pouvez pas éviter les intégrations avec d'autres systèmes de nos jours. Nous avons rendu les intégrations aux services REST très faciles en ajoutant un Appeler l'action microflow REST. Pour gérer les données envoyées vers et depuis les services REST, Mendix prend en charge les représentations JSON et XML. Les documents de mappage sont très intuitifs pour gérer les structures de données et sont entièrement intégrés à nos appels REST.

Essayez-le vous-même et découvrez à quel point les intégrations peuvent être puissantes et amusantes !

Choisissez votre langue