Accueil Blog Comment utiliser ASP.NET Web API et MVC avec Acumatica

Comment utiliser ASP.NET Web API et MVC avec Acumatica

Samvel Petrosov | 18 janvier 2021

Comment utiliser ASP.NET Web API et MVC avec Acumatica

Récemment, j'ai souvent entendu d'autres développeurs dire qu'il était très difficile, voire impossible, d'utiliser ASP.NET Web API et MVC directement avec Acumatica. Cependant, ce n'est pas aussi difficile que nous sommes amenés à le croire. En fait, je vais partager avec vous dans mon article comment vous pouvez utiliser ces technologies et les intégrer dans votre code avec la plateforme de développement Acumatica.

ASP.NET Web API

Acumatica utilise Autofac pour l'injection de dépendances, ce qui permet d'enregistrer des contrôleurs provenant de différentes bibliothèques. Ceci peut être réalisé relativement simplement de la manière suivante :

GIST : https://gist.github.com/sampetrosov/566e676cafc9eaa3a05f050b137bc8b6

`config.MapHttpAttributeRoutes();` permet d'utiliser `RouteAttributes` sur notre contrôleur et ` builder.RegisterApiControllers(Assembly.GetExecutingAssembly());` enregistre toutes les classes héritées de ApiController.

Tout d'abord, voyons comment nous pouvons définir un simple point de terminaison REST de l'API Web qui acceptera certaines données et créera les enregistrements correspondants dans Acumatica ERP (Enterprise Resource Planning). Nous avons besoin d'un mécanisme d'autorisation pour obtenir le nom d'utilisateur et le mot de passe afin de se connecter à Acumatica. J'utiliserai une méthode d'autorisation simple telle qu'illustrée dans le code ci-dessous :

GIST : https://gist.github.com/sampetrosov/0384f2a9500e1f59c5c6cd5fd1b115ec

Il suppose que la société, le nom d'utilisateur et le mot de passe seront transmis sous la forme d'une chaîne "company:username:password" encodée avec base64. Et comme vous pouvez le voir dans le code, Company est optionnel et requis seulement si vous avez plusieurs locataires dans Acumatica. Je vais utiliser un modèle simple pour accéder aux comptes commerciaux dans Acumatica et y ajouter des enregistrements comme suit :

GIST : https://gist.github.com/sampetrosov/f7df2fe0e8cc9923a96713a1f0ef53dd

Comme vous pouvez le constater, certaines parties du programme sont simplifiées ou omises. Par exemple, la validation des données entrantes pour le Business Account. Maintenant que nous disposons d'un modèle, nous pouvons définir l'ApiController, ce qui peut être fait très simplement de la manière suivante :

GIST : https://gist.github.com/sampetrosov/d29fd9c18078db3ffedcf944bb07b636

Comme vous l'avez peut-être déjà remarqué, il s'agit d'un contrôleur d'API Web ordinaire et c'est tout ce dont nous avons besoin pour accepter les requêtes.

Contrôleurs MVC et vues Razer

Voyons maintenant comment nous pouvons réaliser quelque chose comme des contrôleurs MVC et des vues Razor. En termes simples, la différence fondamentale entre un contrôleur API et un contrôleur MVC est qu'un contrôleur API exige que tous les résultats renvoyés en tant que réponse soient sérialisés.

Dans ce cas, nous pouvons donc utiliser un contrôleur d'API et nous contenter d'effectuer la compilation et la sérialisation du html/cshtml avant de le renvoyer. J'utiliserai le RazorEngine(Antaris/RazorEngine : Open source templating engine based on Microsoft's Razor parsing engine (github.com) ) pour compiler les fichiers .cshtml et utiliser la syntaxe razor.

J'ajouterai mes vues dans le dossier "Frames/IIG/" et les chargerai à partir du code en tant que texte. Dans le cas d'un point de terminaison MVC, nous supposons que l'utilisateur doit ouvrir la page dans le navigateur et fournir un jeton qui peut être généré par une entrée dans Acumatica et envoyé par email.

Nous afficherons les données correspondantes après avoir transmis les informations d'autorisation. Ci-dessous, vous pouvez voir que nous avons ajouté quelques actions à notre contrôleur API pour effectuer notre autorisation dans notre code :

GIST: https://gist.github.com/sampetrosov/ea3739474ee44477f489fbcb29a80547

Le résultat est que l'action Get affichera la page contenant le formulaire d'autorisation, comme le montre la capture d'écran ci-dessous :

Comment utiliser ASP.NET Web API et MVC avec Acumatica

L'action POST tentera d'effectuer l'autorisation et de renvoyer le résultat de la manière suivante :

Comment utiliser ASP.NET Web API et MVC avec Acumatica

Dans mon cas particulier, j'utilise simplement "company:username:password" encodé en base64 comme jeton. Cependant, pour des scénarios réels, vous devriez probablement ajouter des branches, des horodatages et d'autres identifiants d'enregistrement pour filtrer et afficher uniquement les enregistrements auxquels ce jeton est assigné.

Vous voyez donc qu'il n'est pas du tout difficile d'utiliser ASP.NET Web API et MVC directement avec Acumatica.

Sur GitHub, j'ai fourni le code source complet et le lien du paquet d'installation que vous pouvez utiliser dans votre propre code :

https://github.com/sampetrosov/Acumatica-CustomController.git

Nous espérons que ces informations vous ont été utiles dans votre travail de développement et qu'elles vous ont facilité la tâche en ce qui concerne l'utilisation de l'API Web ASP.NET et de MVC.

Bon codage !

Auteur du blog

Samvel est architecte logiciel chez Information Integration Group Inc. (IIG). Sa carrière a débuté en tant que développeur C# et s'est rapidement transformée en un rôle d'analyste en développement pour résoudre les limitations standard de l'ERP. Il a plus de 5 ans d'expérience dans le développement de logiciels dans le domaine de l'ERP et a géré tous les aspects du cycle de développement. Pendant son temps libre, il aime jouer aux échecs et lire des livres.

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