Consumir una API REST en Dynamics 365 for Finance and Operations usando RestSharp

En uno de nuestros últimos proyectos implantando #MSDyn365FO nos ha surgido la necesidad de consumir un API REST para realizar una serie de integraciones entre el ERP y aplicaciones externas. En esta ocasión nos hemos apoyado en RestSharp para ello.

RestSharp es un cliente HTTP completo de código abierto que funciona con todas las tecnologías .net, y como todos sabéis, X++ ya está incluido dentro del stack .net (oh yeah!). RestSharp nos va a permitir acceder rápidamente a los datos requeridos sin la complejidad de manejar peticiones HTTP sin procesar.

Ahora, si os parece, vamos a ver como podemos utilizar esta librería en nuestro sistema. Para ello, lo primero que haremos es descargarnos el paquete de NuGet desde el cual podemos extraer la dll para utlizarla en nuestro sistema.

Una vez que tenemos la dll disponible pasaremos a agregarlo como referencia dentro de nuestro proyecto para poder utilizarlo, y hay que tener en cuenta que necesitamos transferir esta dll entre los distintos entornos (UAT, pre-producción, producción…), y puesto que nos encontramos en un entorno Cloud sobre el que no tenemos acceso a los entornos productivos, la mejor manera de hacerlo es la siguiente:

  • Añadimos la dll a la carpeta Bin del paquete en el que vayamos a escribir nuestro código.

  • Para poder mover el archivo entre los distintos entornos y que pueda ser utilizado en todos ellos, lo añadiremos a nuestro repositorio de código Azure DevOps desde el Source Control Explorer, de esta forma, cuando generemos un Deployable Package, este incluirá la dll y será desplegada entre los distintos entornos a través de LCS. La forma de conseguir esto, es en el Source Control Explorer, botón derecho sobre la carpeta bin de nuestro paquete, Add items to folder. Seleccionamos la dll y finalizamos.
  • Ahora solo nos queda añadir la referencia a Visual Studio y utilizarlo. Para ello, vamos a nuestra solución en Visual Studio, y sobre el nodo References, hacemos click con el botón derecho, Add reference, y seleccionamos la dll que tenemos en nuestra carpeta bin.

  • Por último, creamos una clase que se encargará de ejecutar las llamadas http, añadiendo en ellas, a través de directivas using, las librerías RestSharp para manejar las peticiones, y NewtonSoft para gestionar las respuestas en formato json de forma sencilla.

Nota: Para poder realizar la deserialización del objeto recibido sin ningún problema, lo más importante es que los DataMembers del contrato de datos tengan exáctamente el mismo nombre que el Json que recibimos como respuesta, tal y como podéis ver en el siguiente ejemplo:

En conclusión, la utilización de una librería como RestSharp hace que el consumo de APIs REST, o de llamadas Http resulten realmente sencillas, de forma que podemos centrarnos, como siempre, en la gestión de los datos. Como siempre, espero que os resulte útil, porque para mi lo ha sido. Cualquier cosa, os leo en los comentarios, hasta la próxima!! 🙂

2 comments / Add your comment below

  1. Buenas tardes, estoy interesado en consumir una api de dynamic 365 por lotes o batch-
    No puede bajar la dll de RestSharp baje lo que esta en GitHub pero no lo encontre.
    SI me la puedes brindar te agradezco
    Saludos

    1. Hola Juan Ramón, primero, agradecerte que te pases por mi blog y comentes.

      Si no me equivoco, deberías ser capaz de descargarte el Nuget package (nupkg) desde el enlace que hay en el artículo. Posteriormente, puedes convertirlo en un zip (cambiar la extensión a .zip), y podrás extraer de ahí la dll. La versión compatible con X++ será la que encuentres en lib/net471/RestSharp.dll

      Un saludo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies