Accueil Blog (en) Utilisation de l’outil Générateur de modèle de point de terminaison pour le client d’API REST

Utilisation de l’outil Générateur de modèle de point de terminaison pour le client d’API REST

Le générateur de modèle de point de terminaison est un véritable générateur de temps lorsqu’un point de terminaison personnalisé a été créé dans Acumatica et qu’un logiciel tiers doit utiliser le client d’API REST pour l’intégration.  Même si quelques étapes sont nécessaires dans le processus de création des modèles de point de terminaison, c’est beaucoup moins que d’écrire les classes individuellement.  
Diane Cawley | Le 27 décembre 2022

Utilisation de l’outil Générateur de modèle de point de terminaison pour le client d’API REST

Introduction

Lors de l’intégration dans Acumatica à l’aide de 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’adresse suivante : Acumatica/AcumaticaRESTAPIClientForCSharp (github.com)

Une partie de ce référentiel est le code complet d’un outil qui crée tous les modèles pour un point de terminaison donné qui peuvent être utilisés conjointement avec RESTClient.   Cet outil s’appelle EndpointModelGenerator.

Utilisation de l’outil Générateur de modèle de point de terminaison pour le client d’API REST

Téléchargez la dernière version de ce référentiel complet, car les modifications de code seront apportées à la fois à lacumatica A. REPOS. API. Client.sln et aussi le EndpointModelGenerator.sln.

Dans mon article de blog précédent, Intégration à l’aide du client d’API REST avec le module de fabrication d’Acumatica, je décris comment utiliser les modèles existants pour les points de terminaison DEFAULT et MANUFACTURING .   Mais que se passe-t-il si vous devez personnaliser ces points de terminaison ou créer un nouveau point de terminaison ?

Le code EndpointModelGenerator fourni dans 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.   Passons en revue les étapes sur la façon dont 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 il vous sera demandé de faire 3 étapes:

  • Entrez le chemin d’accès à un projet Visual Studio qui conservera les modèles.
  • Coller dans le JSON pour le point de terminaison
  • Cliquez sur un bouton pour générer les fichiers C# pour les modèles.

C’est assez simple - mais il y a du travail de préparation à faire.

Prérequis

Pour commencer, j’ai étendu le point final par défaut à un nouveau appelé DEVMVPBlog, version 20.200.001.  Voir ci-dessous pour la capture d’écran de ce point final.   Il y a une nouvelle entité dans ce point de terminaison pour les questions d’inventaire, qui est absente du point de terminaison DEFAULT .  N’importe lequel de vos points de terminaison personnalisés à partir de la version 20 ou supérieure fonctionnera 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 Points de terminaison.  Il s’agit d’une bibliothèque de classes C #, et je l’ai nommée Acumatica.DEVMVPBlog_20.200.001 pour conserver la même convention d’affectation de noms que celle utilisée par les projets de point de terminaison existants.  Le projet est créé avec un seul fichier de classe vide, comme indiqué :

EndPointModelGenerator

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

Ensuite, vous devez revenir au point de terminaison personnalisé, cliquer sur les ellipses (...), et choisir OpenAPI 2.0.  Un nouvel onglet s’affiche pour afficher la représentation JSON de la définition de 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 95000 lignes.   Il est trop grand pour être collé dans la zone de texte sur le EndpointModelGenerator, j’ai donc choisi d’apporter une modification à la façon dont EndpointModelGenerator fonctionne dans le code de base.   Donc, pour cette étape, j’ai enregistré le texte JSON de la page Web dans un fichier texte avec l’extension de .json.

J’ai ensuite modifié le code EndpointModelGenerator pour demander à l’utilisateur de rechercher le fichier de schéma de point de terminaison .json au lieu de le coller directement dans le champ de texte.  Ensuite, j’ai changé le bouton Générer pour ouvrir le fichier et l’utiliser dans le processus générateur lui-même.

Le formulaire ressemble maintenant à ceci, avec les étapes (1), (2) et (3) toutes définies comme des boutons.

EndPointModelGenerator

Les modifications de code au processus de génération sont affichées ici :

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

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

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

Étape (1) – Cliquez sur Sélectionner un projet.  Accédez au fichier .csproj qui a été créé pour être utilisé avec la nouvelle définition de point de terminaison, puis cliquez sur Ouvrir.

EndPointModelGenerator

Notez 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 de schéma JSON. Accédez au fichier .json créé à partir de la définition Open API d’Acumatica, puis cliquez sur Ouvrir.

EndPointModelGenerator

Le chemin d’accès au fichier est affiché sur le formulaire.

EndPointModelGenerator

Étape (3) - Cliquez sur le bouton Générer .  C’est là que tout le travail a lieu.   La zone de texte du journal sera renseignée avec chacune des entités du point de terminaison au fur et à mesure de leur traitement.

EndPointModelGenerator

Vérifiez les résultats dans RESTAPIClient Code

Ouvrez la solution Acumatica.REST.API.Client.  Notez que le projet Acumatica.DEVMVPBlog_20.200.001 a maintenant été renseigné avec les sous-dossiers API et Modèle - et toutes les entités du point de terminaison ont maintenant des définitions de classe appropriées.  J’ai ouvert la classe InventoryIssue car c’était la raison principale du nouveau point de terminaison dans cet exemple.

EndPointModelGenerator

La création de la solution créera le Acumatica.DEVMVPBlog_20.200.001.dll, qui pourra ensuite être utilisé dans votre projet de code d’intégration.

 

Utilisez le point de terminaison résultant .dll

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

Ensuite, ajoutez les instructions « utilisation » pour les deux *. Api et *. Classes de modèles dans les .dll référencées.  Voir l’exemple ci-dessous.

EndPointModelGenerator

Voici un snip de code utilisant l’objet InventoryIssues nouvellement disponible

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

Conclusion

Le générateur de modèle de point de terminaison est un véritable générateur de temps lorsqu’un point de terminaison personnalisé a été créé dans Acumatica et qu’un logiciel tiers doit utiliser le client d’API REST pour l’intégration.  Même si quelques étapes sont nécessaires dans le processus de création des modèles de point de terminaison, c’est beaucoup moins que d’écrire les classes individuellement.   Un grand merci à Dmitrii Naumov pour la création du client API REST ainsi que du 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 de chaîne d’approvisionnement depuis 1995. Elle est titulaire d’un baccalauréat en informatique et d’un MBA de l’Université d’État de l’Arizona. Elle dirige les équipes de développement et de mise en œuvre et est responsable de l’évolution continue des produits ainsi que de son intégration avec les systèmes ERP tels que Acumatica. Diane est MVP Acumatica depuis 2018. Elle a participé à tous les Hackathons annuels à ce jour. Elle travaille avec le framework Acumatica avec une concentration sur les API depuis la version 5.1 et a développé plusieurs intégrations complexes entre WMS de Savant et Acumatica. En dehors du travail, Diane et son mari aiment voyager à travers le monde et apprendre de nouvelles choses en assistant à diverses rencontres - en particulier celles liées à l’IoT et à la robotique.

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