Inicio Blog Cómo utilizar ASP.NET Web API y MVC con Acumatica

Cómo utilizar ASP.NET Web API y MVC con Acumatica

Samvel Petrosov | 18 de enero de 2021

Cómo utilizar ASP.NET Web API y MVC con Acumatica

Recientemente, he escuchado a menudo de otros desarrolladores que es muy difícil o ni siquiera posible utilizar ASP.NET Web API y MVC directamente con Acumatica. Sin embargo, no es tan difícil como nos hacen creer. De hecho, compartiré contigo en mi post cómo puedes utilizar estas tecnologías e integrarlas en tu código con la plataforma de desarrollo de Acumatica.

API web ASP.NET

Acumatica utiliza Autofac para la inyección de dependencias, lo que permite registrar controladores de varias bibliotecas. Esto se puede lograr de manera relativamente sencilla de la siguiente manera:

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

`config.MapHttpAttributeRoutes();` permite utilizar `RouteAttributes` en nuestro Controlador y ` builder.RegisterApiControllers(Assembly.GetExecutingAssembly());` registra todas las clases heredadas de ApiController.

Primero, revisemos cómo podemos definir un simple Web API REST Endpoint que aceptará algunos datos y creará los registros correspondientes en Acumatica ERP. Necesitamos tener un mecanismo de autorización para obtener el nombre de usuario y la contraseña para iniciar sesión en Acumatica. Usaré un método de autorización simple como el ilustrado en el código de abajo:

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

Asume que la empresa, el nombre de usuario y la contraseña se pasarán como una cadena "empresa:nombredeusuario:contraseña" codificada con base64. Y como puedes ver en el código, esa Compañía es opcional y requerida sólo si tienes múltiples inquilinos en Acumatica. Usaré un modelo simple para acceder a las Cuentas de Negocio en Acumatica y agregar registros a ellas como sigue:

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

Como puede ver, algunas partes del programa se simplifican o se omiten. Por ejemplo, la validación de los datos entrantes para la Cuenta Comercial. Ahora que tenemos un modelo, podemos definir el ApiController, que se puede hacer de una manera muy sencilla de la siguiente manera:

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

Como ya te habrás dado cuenta, es sólo un controlador Web API normal y esto es básicamente todo lo que necesitamos para aceptar peticiones.

Controladores MVC y vistas Razer

Ahora vamos a ver cómo podemos lograr algo parecido a MVC Controllers y Razor Views. En términos simples, la diferencia básica entre un controlador de API y un controlador MVC es que un controlador de API requiere que todos los resultados que se envían de vuelta como una respuesta deben ser serializados.

Así que en este caso, podemos utilizar un controlador de API y simplemente hacer la compilación adecuada y la serialización de la html/cshtml antes de enviarlo de vuelta. Utilizaré el RazorEngine(Antaris/RazorEngine: Motor de plantillas de código abierto basado en el motor de análisis Razor de Microsoft (github.com) ) para compilar los archivos .cshtml y utilizar la sintaxis razor.

Añadiré mis vistas bajo la carpeta "Frames/IIG/" y las cargaré desde el código como texto. En el caso de un endpoint MVC, asumimos que el usuario necesita abrir la página en el navegador y proporcionar un token que puede ser generado por alguna entrada en Acumatica y enviado por correo electrónico.

Mostraremos los datos correspondientes después de pasar la información de autorización. Abajo, puedes ver que agregamos algunas acciones a nuestro Controlador API para hacer nuestra autorización en nuestro código:

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

El resultado es que la Acción Obtener mostrará la página con el formulario de Autorización como se muestra en la captura de pantalla de abajo:

Cómo utilizar ASP.NET Web API y MVC con Acumatica

Y la Acción POST intentará hacer la autorización y devolver el resultado algo como esto:

Cómo utilizar ASP.NET Web API y MVC con Acumatica

En mi caso particular, sólo estoy utilizando "company:username:password" codificado en base64 como token. Sin embargo, para escenarios del mundo real, probablemente también deberías añadir rama, marcas de tiempo y algunos otros identificadores de registro para filtrar y mostrar solo los registros a los que se asigna este token.

Como ves, después de todo no es nada difícil utilizar ASP.NET Web API y MVC directamente con Acumatica.

En GitHub, he proporcionado el código fuente completo y el enlace al paquete de instalación que puedes utilizar en tu propio código:

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

Esperemos que esta información le haya resultado útil en su propio trabajo de desarrollo y le ayude a hacer sus esfuerzos un poco más fáciles con respecto al uso de ASP.NET Web API y MVC.

¡Feliz codificación!

Autor del blog

Samvel es arquitecto de software en Information Integration Group Inc. (IIG). Su carrera comenzó como desarrollador de C# y rápidamente se fusionó en un papel de desarrollo analista para resolver las limitaciones estándar de ERP. Tiene más de 5 años de experiencia en el desarrollo de software ERP y ha gestionado todos los aspectos del ciclo de desarrollo. En su tiempo libre, le gusta jugar al ajedrez y leer libros.

Reciba las actualizaciones del blog en su bandeja de entrada.