Inicio Blog Uso de la herramienta Endpoint Model Generator para REST API Client

Uso de la herramienta Generador de modelos de punto final para el cliente API REST

El generador de modelos de punto final es un verdadero ahorro de tiempo cuando se ha creado un punto final personalizado en Acumatica y un software de terceros necesita utilizar el cliente de la API REST para la integración. Aunque se necesitan algunos pasos en el proceso de creación de los modelos de punto final, son muchos menos que escribir las clases individualmente.  
Diane Cawley | 27 de diciembre de 2022

Uso de la herramienta Generador de modelos de punto final para el cliente API REST

Introducción

Al integrarse en Acumatica mediante la API REST, resulta muy útil utilizar Acumatica.RESTClient.dll. El equipo de desarrollo de Acumatica ha proporcionado esta herramienta en Github en la siguiente URL: Acumatica/AcumaticaRESTAPIClientForCSharp (github.com)

Parte de este repositorio es el código completo de una herramienta que crea todos los modelos para un punto final determinado que se pueden utilizar junto con RESTClient. Esta herramienta se llama EndpointModelGenerator.

Uso de la herramienta Generador de modelos de punto final para el cliente API REST

Descargue la última versión de este repositorio completo, ya que los cambios de código se realizarán tanto enAcumatica.REST.API.Client.sl n como en EndpointModelGenerator.sln.

En mi entrada de blog anterior, Integración mediante el cliente de API REST con el módulo de fabricación de Acumatica, describo cómo utilizar los modelos existentes para los puntos finales DEFAULT y MANUFACTURING. Pero, ¿qué sucede si necesita personalizar estos puntos finales o crear un nuevo punto final?

El código EndpointModelGenerator proporcionado en Github es una aplicación de escritorio C# que utiliza la salida JSON de la definición Open API de un Endpoint de Servicios Web y crea las clases C# asociadas que se pueden utilizar con RESTClient.dll. Veamos cómo funciona.

Debe abrir la solución en Visual Studio 2022, ya que requiere .Net 6. Construya y ejecute el proyecto tal cual, y se le pedirá que realice 3 pasos:

  • Introduzca la ruta a un proyecto de Visual Studio que contendrá los modelos.
  • Pegue el JSON para el endpoint
  • Haga clic en un botón para generar los archivos C# de los modelos.

Esto es bastante sencillo, pero hay que hacer algunos preparativos.

Requisitos previos

Para empezar, he extendido el endpoint DEFAULT a uno nuevo llamado DEVMVPBlog, versión 20.200.001. Vea abajo la captura de pantalla de este endpoint. Hay una nueva entidad en este endpoint para Problemas de Inventario, que falta en el endpoint DEFAULT. Cualquiera de sus puntos finales personalizados a partir de la versión 20 o superior funcionará de la misma manera.

EndPointModelGenerator

A continuación, cree un nuevo proyecto dentro de la solución Acumatica.REST.Client. Para este ejemplo, el proyecto se agrega a la carpeta Endpoints. Se trata de una biblioteca de clases de C# y la he denominado Acumatica.DEVMVPBlog_20.200.001 para mantener la misma convención de nomenclatura que utilizan los proyectos de puntos finales existentes. El proyecto se crea con un único archivo de clase vacío, como se muestra:

EndPointModelGenerator

Elimine el archivo Class1.cs, ya que no se utilizará, y guarde los cambios en la solución.

A continuación, debe volver al endpoint personalizado, hacer clic en las elipses (...) y elegir OpenAPI 2.0. Aparecerá una nueva pestaña con la representación JSON de la definición del endpoint. (véanse los ejemplos siguientes)

EndPointModelGenerator EndPointModelGenerator

Los datos JSON para mi endpoint extendido son MUY largos - más de 95000 líneas. Es demasiado grande para pegar en el cuadro de texto en el EndpointModelGenerator, así que opté por hacer una modificación a la forma en que el EndpointModelGenerator funciona en el código base. Así que, para este paso, guardé el texto JSON de la página web en un archivo de texto con la extensión .json.

A continuación, modifiqué el código de EndpointModelGenerator para pedir al usuario que busque el archivo de esquema de punto final .json en lugar de pegarlo directamente en el campo de texto. A continuación, cambié el botón Generar para abrir el archivo y utilizarlo en el propio proceso del generador.

El formulario tiene ahora este aspecto, con los pasos (1), (2) y (3) definidos como botones.

EndPointModelGenerator

Aquí se muestran los cambios en el código del proceso Generar:

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

Ejecutar el generador de modelos

Ahora que todo está preparado, es hora de ejecutar el Generador y ver los resultados.

Paso (1) - Haga clic en Seleccionar proyecto. Busque el archivo .csproj que se creó para utilizarlo con la nueva definición de punto final y haga clic en Abrir.

EndPointModelGenerator

Observe que otros cuadros de texto se rellenan con la información necesaria para proceder a la generación de los modelos.

EndPointModelGenerator

Paso (2) - Haga clic en Seleccionar archivo de esquema JSON. Busque el archivo .json que se creó a partir de la definición de Open API de Acumatica y haga clic en Abrir.

EndPointModelGenerator

La ruta del archivo se muestra en el formulario.

EndPointModelGenerator

Paso (3) - Haga clic en el botón Generar Generar. Aquí es donde tiene lugar todo el trabajo. El cuadro de texto de registro se irá rellenando con cada una de las entidades del endpoint a medida que se vayan procesando.

EndPointModelGenerator

Compruebe los resultados en el código RESTAPIClient

Abra la solución Acumatica.REST.API.Client. Observe que el proyecto Acumatica.DEVMVPBlog_20.200.001 se ha rellenado con las subcarpetas API y Modelo, y que todas las entidades del punto final tienen ahora las definiciones de clase adecuadas. He abierto la clase InventoryIssue ya que era la razón principal del nuevo endpoint en este ejemplo.

EndPointModelGenerator

Al compilar la solución se creará el archivo Acumatica.DEVMVPBlog_20.200.001.dll, que podrá utilizarse en el proyecto de código de integración.

 

Utilizar el Endpoint .dll resultante

Abra su solución de integración y añada una referencia al endpoint .dll recién creado (a partir de la compilación de la última sección).

A continuación, añada las sentencias 'using' para las clases *.Api y *.Model dentro de la .dll referenciada. Véase el siguiente ejemplo.

EndPointModelGenerator

A continuación se muestra un fragmento de código que utiliza el nuevo objeto InventoryIssues disponible

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

Conclusión

El generador de modelos de punto final es un verdadero ahorro de tiempo cuando se ha creado un punto final personalizado en Acumatica y un software de terceros necesita utilizar el cliente de la API REST para la integración. Aunque se necesitan algunos pasos en el proceso de creación de los modelos de punto final, son muchos menos que escribir las clases individualmente. Muchas gracias a Dmitrii Naumov por crear el cliente API REST y el generador de modelos. Como ISV de Acumatica con un producto conectado, nuestro equipo ahorra tiempo utilizando estas herramientas.

¡Feliz codificación!

Autor del blog

Diane Cawley es cofundadora y arquitecta jefe de Savant Software, que ofrece soluciones para la cadena de suministro desde 1995. Es licenciada en Informática y MBA por la Universidad Estatal de Arizona. Dirige los equipos de desarrollo e implantación y es responsable de la evolución continua del producto, así como de su integración con sistemas ERP como Acumatica. Diane es MVP de Acumatica desde 2018. Ha participado en todos los Hackathon anuales hasta la fecha. Ella ha estado trabajando con el marco de Acumatica con una concentración en API desde la versión 5.1 y ha desarrollado varias integraciones complejas entre WMS de Savant y Acumatica. Fuera del trabajo, Diane y su marido disfrutan viajando por el mundo y aprendiendo cosas nuevas asistiendo a varios encuentros, especialmente los relacionados con IoT y robótica.

Reciba las actualizaciones del blog en su bandeja de entrada.