Accueil Blog Utilisation de l'outil Endpoint Model Generator pour le client REST API

Utilisation de l'outil Endpoint Model Generator pour le client REST API

Le générateur de modèles de points de terminaison permet de gagner du temps lorsqu'un point de terminaison personnalisé a été créé dans Acumatica et qu'un logiciel tiers doit utiliser le client API REST pour l'intégration. Même si quelques étapes sont nécessaires dans le processus de création des modèles de points de terminaison, elles sont bien moins nombreuses que l'écriture des classes individuellement.  
Diane Cawley | 27 décembre 2022

Utilisation de l'outil Endpoint Model Generator pour le client REST API

Introduction

Lors de l'intégration dans Acumatica en utilisant l'API REST, il est très utile d'utiliser Acumatica.RESTClient.dll. L'équipe de développement d'Acumatica a fourni cet outil dans Github à l'URL suivante : Acumatica/AcumaticaRESTAPIClientForCSharp (github.com)

Une partie de ce dépôt est le code complet d'un outil qui crée tous les modèles pour un point de terminaison donné qui peut être utilisé en conjonction avec le RESTClient. Cet outil s'appelle EndpointModelGenerator.

Utilisation de l'outil Endpoint Model Generator pour le client REST API

Téléchargez la dernière version de ce référentiel complet, car les changements de code seront effectués à la fois dansAcumatica.REST.API.Client.sln et dans EndpointModelGenerator.sln.

Dans mon précédent article de blog, Integration Using the REST API Client with Acumatica's Manufacturing Module, je décris comment utiliser les modèles existants pour les points de terminaison DEFAULT et MANUFACTURING. Mais qu'en est-il si vous avez besoin de personnaliser ces points de terminaison ou d'en créer un nouveau ?

Le code EndpointModelGenerator fourni sur Github est une application de bureau C# qui utilise la sortie JSON de la définition Open API d'un point de terminaison de services Web et crée les classes C# associées qui peuvent être utilisées avec RESTClient.dll. Voyons comment cela fonctionne.

Vous devez ouvrir la solution dans Visual Studio 2022, car elle nécessite .Net 6. Construisez et exécutez le projet tel quel, et vous serez invité à effectuer 3 étapes :

  • Saisissez le chemin d'accès à un projet Visual Studio qui contiendra les modèles.
  • Coller le JSON pour le point d'accès
  • Cliquez sur un bouton pour générer les fichiers C# pour les modèles.

C'est assez simple, mais il y a un peu de travail préparatoire à faire.

Conditions préalables

Pour commencer, j'ai étendu le point de terminaison DEFAULT à un nouveau point de terminaison appelé DEVMVPBlog, version 20.200.001. Voir ci-dessous la capture d'écran de ce point de terminaison. Il y a une nouvelle entité dans ce point de terminaison pour les questions d'inventaire, qui est absente du point de terminaison DEFAULT. Tous vos points de terminaison personnalisés à partir de la version 20 ou supérieure fonctionneront de la même manière.

EndPointModelGenerator

Ensuite, créez un nouveau projet dans la solution Acumatica.REST.Client. Pour cet exemple, le projet est ajouté au dossier Endpoints. Il s'agit d'une bibliothèque de classe C#, et je l'ai nommé Acumatica.DEVMVPBlog_20.200.001 pour garder la même convention de nommage que celle utilisée par les projets de points de terminaison existants. Le projet est créé avec un seul fichier de classe vide, comme indiqué :

EndPointModelGenerator

Supprimez le fichier Class1.cs car il ne sera pas utilisé, puis enregistrez vos modifications dans la solution.

Ensuite, vous devez retourner au point de terminaison personnalisé, cliquer sur les ellipses (...), et choisir OpenAPI 2.0. Un nouvel onglet sera affiché montrant la représentation JSON de la définition du point de terminaison. (voir les exemples ci-dessous)

EndPointModelGenerator EndPointModelGenerator

Les données JSON pour mon point de terminaison étendu sont TRÈS longues - plus de 95 000 lignes. Elles sont trop volumineuses pour être collées dans la zone de texte de l'EndpointModelGenerator, c'est pourquoi j'ai choisi de modifier la façon dont l'EndpointModelGenerator fonctionne dans le code de base. Ainsi, pour cette étape, j'ai sauvegardé le texte JSON de la page web dans un fichier texte avec l'extension .json.

J'ai ensuite modifié le code de EndpointModelGenerator pour demander à l'utilisateur de rechercher le fichier .json du schéma des points d'extrémité au lieu de le coller directement dans le champ de texte. Ensuite, j'ai modifié le bouton Generate pour ouvrir le fichier et l'utiliser dans le processus de génération lui-même.

Le formulaire se présente maintenant comme suit, les étapes (1), (2) et (3) étant toutes définies comme des boutons.

EndPointModelGenerator

Les modifications apportées au code du processus Generate sont présentées ici :

GIST: https://gist.github.com/dianecawley/2018d5f1cc4146966848056bd6b45f6f

Exécuter le générateur de modèle

Maintenant que tout est prêt, il est temps d'exécuter le générateur et de voir les résultats.

Étape (1 ) - Cliquez sur Sélectionner un projet. Recherchez le fichier .csproj qui a été créé pour être utilisé avec la nouvelle définition de point final, et cliquez sur Ouvrir.

EndPointModelGenerator

Remarquez que plusieurs autres zones de texte sont remplies avec les informations nécessaires pour procéder à la génération des modèles.

EndPointModelGenerator

Étape (2 ) - Cliquez sur Sélectionner le fichier JSON Schema. Naviguez jusqu'au fichier .json qui a été créé à partir de la définition de l'API ouverte d'Acumatica, et cliquez sur Open.

EndPointModelGenerator

Le chemin d'accès au fichier est indiqué sur le formulaire.

EndPointModelGenerator

Étape (3 ) - Cliquez sur le bouton Générer le bouton "Générer". C'est ici que tout le travail s'effectue. La zone de texte du journal sera remplie avec chacune des entités du point final au fur et à mesure qu'elles sont traitées.

EndPointModelGenerator

Vérifier les résultats dans le code RESTAPIClient

Ouvrez la solution Acumatica.REST.API.Client. Remarquez que le projet Acumatica.DEVMVPBlog_20.200.001 a été rempli avec les sous-dossiers API et Model - et toutes les entités dans le point de terminaison ont maintenant les définitions de classe appropriées. J'ai ouvert la classe InventoryIssue car c'est la raison principale de la création du nouveau point de terminaison dans cet exemple.

EndPointModelGenerator

La construction de la solution créera le fichier Acumatica.DEVMVPBlog_20.200.001.dll, qui peut ensuite être utilisé dans votre projet de code d'intégration.

 

Utiliser le point final résultant .dll

Ouvrez votre solution d'intégration et ajoutez une référence au point final .dll nouvellement créé (à partir de la construction dans la dernière section).

Ensuite, ajoutez les instructions "using" pour les classes *.Api et *.Model dans la dll référencée. Voir l'exemple ci-dessous.

EndPointModelGenerator

Voici un extrait de code utilisant l'objet InventoryIssues nouvellement disponible

GIST: https://gist.github.com/dianecawley/842df182253669de0a2d37c429ec1b76

Conclusion

Le générateur de modèles de points de terminaison permet de gagner du temps lorsqu'un point de terminaison personnalisé a été créé dans Acumatica et qu'un logiciel tiers doit utiliser le client API REST pour l'intégration. Même si quelques étapes sont nécessaires dans le processus de création des modèles de points de terminaison, elles sont bien moins nombreuses que l'écriture individuelle des classes. Un grand merci à Dmitrii Naumov pour avoir créé le client API REST ainsi que le générateur de modèles. En tant qu'ISV Acumatica avec un produit connecté, notre équipe gagne du temps en utilisant ces outils.

Bon codage !

Auteur du blog

Diane Cawley est cofondatrice et architecte en chef de Savant Software, qui fournit des solutions pour la chaîne d'approvisionnement depuis 1995. Elle est titulaire d'une licence en informatique et d'un MBA de l'Arizona State University. Elle dirige les équipes de développement et de mise en œuvre et est responsable de l'évolution continue du produit ainsi que de son intégration avec des systèmes ERP tels qu'Acumatica. Diane est MVP Acumatica depuis 2018. Elle a participé à tous les Hackathon annuels à ce jour. Elle travaille avec le cadre Acumatica en se concentrant sur les API depuis la version 5.1 et a développé plusieurs intégrations complexes entre le WMS de Savant et Acumatica. En dehors du travail, Diane et son mari aiment voyager à travers le monde et apprendre de nouvelles choses en participant à diverses rencontres - en particulier celles liées à l'IoT et à la robotique.

Recevez les mises à jour du blog dans votre boîte de réception.