viernes, 26 de febrero de 2016

RemoteEndpoint SharePoint POST

¿No les ha pasado que justo la información que ustedes necesitan para desarrollar un método está incompleta?
Seguramente sí y creo que es una práctica común en el medio de la Tecnología de la Información.
Hace un par de semanas comencé un pequeño desarrollo sobre SharePoint Online en el que necesitaba enviar información capturada en un Add-In de SharePoint hacia un servicio web alojado en otro servidor. Para ello se necesita hacer uso de una herramienta conocida como RemoteEndPoint que proporciona SharePoint para estos casos pero ¿Cómo funciona?
Sencillo (o por lo menos eso es lo que te hace ver la documentación jejeje). Lo primero es seguir la documentación oficial. Ahí nos indican cómo funciona por medio de un diagrama.
Funcionamiento del Remote Endpoint en SharePoint
La idea es simple, nuestro navegador interpretará los archivos JavaScript del Add-In, cuando quiera hacer uso de recursos externos como los de un Web Service ocupará a SharePoint como el intermediario, es decir: le indicará a dónde conectarse, el método, los datos y la respuesta que espera recibir de él entre otras cosas. 
SharePoint tomará la información e intentará realizar la petición; si ésta se lleva a cabo correctamente, el recurso externo enviará la respuesta a SharePoint y éste la enviará al Add-In.
En la documentación ustedes encontrarán cómo crear el proyecto en Visual Studio, cómo formar la solicitud para consultar datos de un Web Service desde JavaScript y finalmente, les indica que registren el RemoteEndPoint en el AppManifest.xml pero, ¿qué ocurre en el caso en el que quieres enviar información al Web Service? Bueno, lamentablemente esa información no está disponible ahí... así que, en este caso nos toca a nosotros encontrar el cómo sí hacer la llamada.
El siguiente ejemplo es muy sencillo pero ejemplifica cómo realizar la actividad.
Pensemos en un pequeño formulario dentro del Add-In que ayude a los desarrolladores a obtener Feedback de sus aplicaciones y, necesitan que la información esté almacenada fuera de Office 365. Para ello se desarrolló un Web Service en Azure que reciba las llamadas y envíe la información a base de datos.
La siguiente función muestra todas las consideraciones para realizar la llamada desde JavaScript y enviar la información:
Los puntos interesantes se encuentran en las líneas 45 y 53 a 58.
En la línea 45 definimos los datos que queremos enviar al Web Service, los cuales son transformados a una cadena de texto correctamente-formada para el envío. Si esto no sucede la llamada al servicio web fallará...
En la línea 53 se define el método en POST que es el ocupado para enviar información (aunque también funciona bien para obtener datos).
En la línea 54 se define el tipo de contenido, esta línea varía ligeramente de la documentación oficial.
Finalmente la línea 58 define el cuerpo de la solicitud, es decir, los datos que serán enviados.
El resto de las líneas son similares al ejemplo en el sitio de Microsoft.

Espero que este pequeño post les haya servido, prueben y comenten porque su retro es muy importante.

Saludos y felices trazos jejeje.