API REST

Conversaciones con las API REST

Las conversaciones con las API REST es la forma que han encontrado los distintos softwares del mundo para integrarse y pasarse información.

Según Wikipedia, la transferencia de estado representacional o REST (del inglés Representational State Transfer) es un estilo de arquitectura de software para sistemas hipermedia distribuidos como la World Wide Web.

El término REST se utiliza para describir cualquier interfaz entre sistemas, que utilice directamente HTTP para obtener datos, o indicar la ejecución de operaciones sobre estos en cualquier formato (XML, JSON, etc.). Es decir, lo que podemos hacer con las API REST es conectar dos softwares distintos entre sí. Para que esto sea posible, los desarrolladores deben documentar estas APIs e indicar qué métodos van a dejar disponibles para que programas externos puedan conectarse y extraer información.

Por mencionar un caso de uso, podemos decir que algunos de los métodos que Facebook tiene habilitados en su API, permiten que otras aplicaciones puedan conectarse para obtener y mostrar a todos los amigos de un usuario en concreto.

REST se apoya en las peticiones HTTP

La gran ventaja que ofrece la tecnología API REST respecto a otras como SOAP es que utilizan el mismo esquema que el protocolo HTTP para solicitar y transferir datos entre las distintas aplicaciones. Cuando escribimos una dirección en la barra de direcciones de nuestro navegador web, este envía una petición GET al servidor web y este, a su vez, nos devuelve una respuesta (REQUEST y RESPONSE).

Por ejemplo, abrimos el navegador y escribimos https://www.auraportal.com. A continuación, este se conecta con el servidor web a través de una conexión TCP/IP y envía una petición de este tipo:

GET /index.html HTTP/1.1
Host: www.auraportal.com
Retorno de carro
  • En la primera línea especificamos el nombre del recurso al que queremos acceder “index.html” y la versión de protocolo que utilizamos HTTP/1.1.
  • En la segunda línea incluimos la cabecera HOST para indicar al servidor web el nombre del dominio al que vamos a acceder. Esta cabecera siempre se incluye, pero pueden incluirse otras.
  • La tercera línea es un retorno de carro similar al que introducimos cuando pulsamos la tecla Entrar.
  • Una vez el servidor Web reciba la petición, en función de la configuración establecida, emitirá una respuesta como esta:
HTTP/1.1
Date: Tue mar 2020 04:33:33 GMT
Server: Microsoft – IIS/10.0
Content-type: text/html; charset=uft-8
Content-length: 1000
Retorno de carro
Texto hasta completar los 1000 bytes
  • La primera línea nos indica la versión del protocolo HTTP.
  • Las siguientes líneas son las cabeceras con los siguientes datos:
    • Fecha y hora de la conexión.
    • Tipo de servidor web que contiene los recursos a los que queremos acceder. En este caso Internet Information Server de Microsoft.
    • Content-type nos indica que el archivo es del tipo txt/html y que el juego de caracteres es uft-8.
    • Content-length nos indica el número de bytes que van a pasarse.
  • A continuación incluimos un retorno de carro.
  • Finalmente, pasamos el contenido hasta llegar a los 1000 bytes.

Métodos HTTP

Los métodos HTTP más utilizados son los siguientes:

Método Descripción *Interactúa con el Servidor Web
GET Solicita unos datos al servidor web No
POST Actualiza datos en el servidor web
PUT Introduce nuevos datos en el servidor web
PATCH Modifica parcialmente un recurso
DELETE Borra datos del servidor web

*Interactúa significa que la petición va a hacer cambios en el servidor. El ejemplo más claro lo tenemos cuando modificamos un registro desde un formulario web y se actualiza la base de datos en el servidor web.

¿cómo aplicamos esto en nuestra API REST?

Vamos a trabajar un ejemplo de integración de una herramienta Low-Code como AuraPortal y el RPA UiPath. Ambas tecnologías tienen como objetivo la automatización de procesos, pero su área de influencia es diferente. La automatización de procesos mediante robots tiene como objetivo disminuir la intervención humana, especialmente en tareas repetitivas. Sin embargo, una herramienta Low-Code como AuraPortal nos proporciona las herramientas necesarias para automatizar los procesos, monitorizarlos y obtener informes sobre el estado de la organización y sus resultados.

En muchas ocasiones, incluir un RPA como automatismo dentro de un flujo de trabajo resulta beneficioso para la aplicación que estamos construyendo, y facilita el trabajo a las personas que intervienen en su desempeño. Obviamente, para hacer esto necesitamos que ambas aplicaciones puedan conectarse e intercambiar información y, por lo tanto, necesitaremos conocer las características del API REST de UiPATH y crear un conector mediante las herramientas de AuraPortal.

En la página web UiPath Orchestator API Guide están documentados los métodos que UiPath pone a disposición de los desarrolladores para conectarse y realizar operaciones con su API.

Cualquier tipo de operación que iniciemos con el RPA va a requerir que nos autentiquemos. En la sección Authenticating podemos leer que el sistema de autenticación de UiPath utiliza un token bearer (estándar de autorización OAuth 2.0), y que debemos realizar una petición de tipo POST a la URL https://cloud.uipath.com/api/account/authenticate con nuestras credenciales de acceso.

Authentication UiPath
Ejemplo para obtener token de acceso a UiPath.

Como podemos ver en el ejemplo que nos proporciona la documentación, el servidor nos devuelve el token en el parámetro “result” de su respuesta.

Creando el conector con AuraPortal

Una vez tengamos información sobre el método que vamos a utilizar, crearemos un conector en AuraPortal siguiendo las instrucciones de la documentación del API. Para ello, accederemos desde Estructura a la sección de Conectores y haremos clic en el botón Crear conector. El siguiente paso será nombrar el conector, seleccionar la función de Servicios Web Rest – Personalizados, y la clase _Servicios web Rest – Personalizados.

Conector Rest AuraPortal

Para configurar el conector haremos clic en Siguiente y seleccionaremos la opción Publicar para que el conector pueda ser utilizado dentro de un proceso automatizado. También definiremos las opciones de fecha y codificación que correspondan.

Ahora, vamos a empezar a definir las operaciones del conector. Como ya hemos comentado, cualquier operación que realicemos con la API de UiPath va a requerir que nos autentiquemos con un token, por lo que el primer paso será crear una operación de autenticación para obtenerlo.

Por lo tanto, siguiendo los pasos de la documentación de la API, crearemos una operación del tipo POST, que apunte a la URL de autentificación de UiPath, y en Request indicaremos los siguientes valores:

{
«tenancyName» : «el_que_corresponda»,
    «usernameOrEmailAddress» : «tu_usuario»,
    «password» : «la_que_corresponda»
}

En Response asignaremos al parámetro “result” un término de diccionario de AuraPortal para que guarde el token.

{
«result»: «3_accessToken»,
}

Cuando realicemos una nueva operación con la API deberemos incluir este token en el Request Headers.

{
«result»: «3_accessToken»,
}

Y seguir los pasos especificados en la documentación de UiPath para crear las nuevas operaciones.

¿Por qué necesitamos una API REST?

Una de las grandes ventajas de ofrecer una API REST, es que otros desarrolladores pueden crear servicios alternativos y llegar a nichos de mercado a los que el producto original no llegaba. Podemos decir que es una forma de encontrar aliados que ayudarán con la expansión de nuestra marca.

Empresas como Evernote, Dropbox, eBay, Twitter, Instagram o Facebook sacan un gran partido de esta estrategia, y una parte muy importante de sus usuarios llegan a través de otras aplicaciones que usan sus respectivas APIs.

AuraPortal Remote Work's virtual assistant, enjoy working in a platform that adapts to your needs.

En cuanto a la parte tecnológica, comentar que las API REST se apoyan en el protocolo de comunicación HTTP, que hoy en día es sin duda el más extendido y utilizado.

Tomás Martí
tomas.marti@auraportal.com