REST API en SharePoint 2013 I: Consulta básica sobre listas

SharePoint 2010 introdujo el “Client Object Models”, que permitía a los desarrolladores interactuar con el modelo de objetos a través de clientes Web, como Silverlight, Javascript y el modelo del lado cliente de .NET a través del servicio _vti_bin/client.svc.

En SharePoint 2013 el servicio client.svc se ha mejorado con capacidades REST (Representational State Transfer), soportando acceso directo a los clientes REST y haciendo más sencillo el acceso al mismo, o lo que es lo mismo, se podrá acceder al modelo de objetos haciendo uso de cualquier tecnología que sea compatible con las solicitudes REST.

Para usar estas capacidades REST habrá que construir peticiones RESTful utilizando el protocolo OData (Open Data Protocol), y el servicio client.svc entregará la respuesta en Atom o JSON, dejando que el programador se encargue de procesar dicha respuesta.

SharePoint REST service architecture

REST nos va a permitir realizar operaciones CRUD (Create, Read, Update y Delete) sobre los objetos SharePoint (listas, elementos de listas, sitios…). Típicamente las operaciones de lectura serán peticiones HTTP de tipo GET, mientras que las de creación y actualización serán de tipo POST, PUT, MERGE y PATCH.

En esta primera parte vamos a hacer un ejemplo sencillo del uso de peticiones de lectura sobre listas de SharePoint, que son las construcciones más sencillas, puesto que las que van a realizar modificaciones sobre objetos SharePoint requieren realizar una obtención de los que SharePoint denomina “Form Digest”, pero eso lo veremos más adelante.

Sintaxis de la estructura de una URI REST

En el siguiente esquema se muestra cómo es la sintaxis que se utiliza para construir URIs para atacar al servicio. Aunque en el ejemplo vamos a utilizar Javascript en un Webpart para mostrar los resultados, se puede también introducir la consulta directamente en la barra de direcciones del navegador y comprobar los datos que devuelve:SharePoint REST request syntax

Por ejemplo, para consultar las listas de la web actual, bastaría con escribir en nuestra barra de direcciones del navegador lo siguiente:

http://sp2013/_api/lists

Y en el navegador veríamos la respuesta del servicio.

Visto un breve resumen, vamos a comenzar con un ejemplo. Vamos a crear un Webpart muy sencillo, que contenga un botón que lance una petición REST para obtener todas las listas de la web actual y las muestre en una tabla. Para ello comenzamos un proyecto de tipo Visual Web Part.

image

image

Vamos a ayudarnos de jQuery para realizar las consultas imageAjax, por lo tanto debemos descargarlo y añadirlo a nuestra solución. También vamos a crear un script Javascript para escribir todo nuestro código. Organizarlo como más os guste, pero tened en cuenta luego los enlaces desde Webpart a la hora de hacer las referencias a los mismos.

En el código del control que forma parte del Webpart vamos a añadir las referencias a los dos scripts y además un botón que sea en que llame a nuestra función de Javascript, y una zona para insertar la tabla con los resultados. Podría tener esta pinta:

image

Vamos a comenzar con el Javascript. Creamos nuestra función encargada de hacer la llamada al servicio:

function getCurrentSiteLists() {
console.log("getCurrentSiteLists");

$.ajax({
url: "/_api/lists",
type: "GET",
headers: { "accept": "application/json; odata=verbose" },
dataType: "json",
success: onGetCurrentSiteListsSuccess,
error: function (xhr) {
console.error(xhr.status + ': ' + xhr.statusText);
}
});
}

Atended a los parámetros. Por un lado vamos a indicar la url a la que vamos a atacar, que en este caso es una url relativa a nuestro sitio, seguido de /_api/lists, ya que vamos a pedir las listas del sitio actual. Por otro lado el tipo de petición, es un tipo GET, y el tipo de dato que vamos a obtener es JSON. Además como cabecera de la petición es obligatorio indicar “accept”:”application/json; odata=verbose”. Sin este último parámetro no podemos realizar la petición, porque nos devolverá un error la respuesta.


Ahora vamos a construir la función que va a encargarse de recoger la respuesta y construir la tabla que vuelque los datos en pantalla:


function onGetCurrentSiteListsSuccess(data) {
console.log("onGetCurrentSiteListsSuccess");

if (data.d) {
var items = [];

items.push("<table>");
items.push("<tr><td>List ID</td><td>Title</td></tr>");

$.each(data.d.results, function (key, val) {
items.push("<tr><td>" +
val.Id + "</td><td>" +
val.Title + "</td><td></tr>");
});

items.push("</table>");
$("#RestResults").html(items.join(""));
}
}

Vamos a mostrar una tabla con el Guid de la lista y su título. El resultado de pulsar el botón sería similar al siguiente:


image


Hasta aquí es posible que nos hayamos encontrado con algunos problemas. Si es así revisad los parámetros de la consulta al servicio REST. Si aún así sigue habiendo problemas, revisad el log de SharePoint. imageYo por ejemplo, debido a limitaciones de máquina obtuve un error de memoria. El servicio me devolvió un Internal Server Error, y mirando en el log de SharePoint pude ver que se trataba de que la memoria escaseaba. El detalle del error era el siguiente:


Application error when access /_vti_bin/client.svc, Error=Memory gates checking failed because the free memory (180297728 bytes) is less than 5% of total memory. As a result, the service will not be available for incoming requests. To resolve this, either reduce the load on the machine or adjust the value of minFreeMemoryPercentageToActivateService on the serviceHostingEnvironment config element.

at System.ServiceModel.Activation.ServiceMemoryGates.Check(Int32 minFreeMemoryPercentage, Boolean throwOnLowMemory, UInt64& availableMemoryBytes)

at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CheckMemoryCloseIdleServices(EventTraceActivity eventTraceActivity)

at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)

Y efectivamente, la memoria que quedaba libre era más bien poca.imageSolución, liberar memoria o asignar más a la máquina.




Una cosa que me ha gustado bastante del JSON devuelto ha sido que cuando queremos acceder a un atributo de un objeto que hemos pedido, y ese atributo es complejo, como por ejemplo, imagelos elementos que forman parte de la lista que estamos consultando, en el valor de ese atributo nos va a dar la url a la que tendríamos que atacar con REST para obtener dicha información. Esto se puede ver depurando el Javascript. Por ejemplo, obtenemos primero todas las listas del sitio en el objeto data.


Y depurando entramos en el detalle de cualquiera de las listas, y buscamos el atributo Items. Podremos ver que no salen directamente, y que en su lugar tenemos la url para realizar la siguiente consulta:


image


Por ejemplo, vamos a listar todos los atributos de la lista que seleccionemos. Para ello vamos a modificar el código Javascript, de tal forma que cuando hagamos clic en el Guid de la lista la tabla se alimente de esos valores. Vamos a consultar un atributo __metadata que tiene cada lista con la url a la que vamos a atacar con REST:


image


El atributo uri nos da la url que necesitamos, así que vamos a modificar cómo se presentan los datos de la primera consulta. Para ello, dentro del foreach vamos a construir un botón como el siguiente:


$.each(data.d.results, function (key, val) {
var metaUri = escape(val.__metadata.uri);
var linkDetails = "<button type='button' onclick=\"showListDetails('" + metaUri + "');\">" +
val.Id + "</button>";
items.push("<tr><td>" +
linkDetails + "</td><td>" +
val.Title + "</td><td></tr>");
});

Y creamos el código que lanzará la consulta REST:


function showListDetails(listUri) {
console.log("showListDetails");

$.ajax({
url: unescape(listUri),
type: "GET",
headers: { "accept": "application/json; odata=verbose" },
dataType: "json",
success: onShowListDetailsSuccess,
error: function (xhr) {
console.error(xhr.status + ': ' + xhr.statusText);
}
});
}

Y a continuación el código encargado de volcar los datos en la tabla:


function onShowListDetailsSuccess(data) {
console.log("onShowListDetailsSuccess");

if (data.d) {
var items = [];

items.push("<table>");
items.push("<tr><td>Attribute</td><td>Value</td></tr>");

$.each(data.d, function (key, val) {
items.push("<tr><td>" +
key + "</td><td>" +
val + "</td><td></tr>");
});

items.push("</table>");
$("#RestResults").html(items.join(""));
}
}

Así, cuando hagamos clic en el elemento de la lista, veremos todos los atributos junto con sus valores. El resultado sería similar al siguiente:


image


Como veis REST nos da la capacidad de realizar consultas del lado del cliente muy potentes, y podemos luego tratar y explotar los datos como nos convenga.


En esta caso hemos realizado sólo consultas de lectura. En el siguiente artículo veremos algún ejemplo de cómo realizar la creación de una lista y la diferencia que hay en la construcción de las peticiones REST.


Si queréis ampliar información, podéis hacer uso de los siguientes enlaces:


Programming using the SharePoint 2013 REST service


Using the SharePoint 2013 REST service

Novedades de características sociales en SharePoint Server 2013

imageEn cada nueva versión de SharePoint, se van introduciendo mejoras y nuevas características sociales, para mejorar la comunicación empresarial. En esta nueva versión nos vamos a encontrar con un MySite muy renovado que va a adaptar funcionalidades que nos recuerdan a Facebook y Twitter, y con dos nuevas plantillas de sitio para crear Comunidades, que van a proporcionar experiencias de foro y fomentar la comunicación y participación en el intercambio de información.

MySite

Al igual que en SharePoint 2010, en la versión de 2013 se siguen mantimageeniendo los sitios de usuario, con una nueva interfaz de usuario más moderna y limpia. Se siguen manteniendo conceptos como los de microblogging y discusiones, y aparecen otros nuevos como Newsfeed, menciones, etiquetas…, pero, realmente qué vamos a encontrarnos y qué aspecto tiene?

About Me

Una página en donde la gente va a poder saber acerca de nosotros. Proyectos en los que estamos trabajando, nuestras habilidades dentro de la empresa, formas de ponerse en contacto con nosotros y una lista con las actividades que estamos haciendo en SharePoint.image

Tendremos disponible además el gráfico organizativo de la empresa, imageen una vista dinámica con Silverlight. En la lista de actividades va a aparecer información reciente con las acciones que estamos realizando en la plataforma, ya sea realizar votaciones, comentarios, etiquetar contenido, etc.

Las etiquetas y notas realizadas pueden ser consultadas de forma global en una página, teniendo disponible una nube de etiquetas, que puede ser gestionada por el administrador de SharePoint, de tal forma que puede eliminar etiquetas que no considere apropiadas.

imageDe nuestro perfil podremos editar aquellos campos que estén habilitados para la edición (administrable de igual forma), y podremos elegir el nivel de visibilidad que van a tener para el resto de usuarios, pudiendo restringir la vista de cierta información a otros compañeros de la organización. Tendremos también la posibilidad de editar nuestra información para ser contactados por otros usuarios. Toda esta información tiene la posibilidad de ser incluida en los resultados de búsqueda de SharePoint, para facilitar la tarea de contactar con otros compañeros según sus habilidades u otros criterios.

Bibliotecas de documentos

Al igual que en la versión anterior, en SharePoint 2013 existe la posibilidad de tener bibliotecas privadas de documentos y bibliotecas públicas para compartir contenido con otros usuarios. En esta versión se han incluido mejoras de sincronización y compartición de esta información. Haciendo uso de Office 2013 tendremos la posibilidad de usar SkyDrive Pro, imageque nos va a permitir mantener sincronizada una biblioteca de documentos en nuestro disco local, teniendo acceso a los documentos de forma offline.

También podremos hacer seguimiento de documentos.image

Además el sistema de compartición se ha mejorado para que sea transparente para el usuario, facilitando la opción de compartir con diferentes usuarios olvidándonos de la gestión de permisos sobre documentos.

Newsfeed

En esta página podremos ver nuestro propio registro de actividades que estamos siguiendo, muy similar al tablón de usuario de Facebook. Este nuevo sistema nos va a permitir una vista mucho más dinámica que en la versión anterior, pudiendo iniciar y responder a conversaciones, incluir en dichas conversaciones enlaces e imágenes, compartir conversaciones, hacer menciones a otros usuarios usando el mismo sistema que Twitter (escribiendo el nombre de un usuario seguido del símbolo @), crear etiquetas usando primero el símbolo #, y teniendo la posibilidad de responder a una conversación con un “Me gusta”.

image

Además tendremos un acceso rápido al contenido que estamos siguiendo, como personas, documentos, sitios y etiquetas. Podremos acceder al detalle de cada categoría y la herramienta incluso nos sugerirá otro contenido que puede interesarnos seguir.image

Tareas

El concepto de tarea sigue siendo el mismo que en la versión anterior. imageLa novedad es que en esta versión tendremos la posibilidad de tener centralizadas todas las listas de tareas desde este enlace, cuando antes estaban localizadas en múltiples ubicaciones, lo que dificultaba el seguimiento. Tendremos la posibilidad de filtrar las tareas desde esta página.

Blog

Podremos crear un blog personal de la misma forma que en la versión anterior, pero ahora con la posibilidad de participar en conversaciones, hacer uso de etiquetas, responder con “Me gusta”, etc.image

Calificación o Rating de contenidos

Ahora con la nueva versión de SharePoint es posible de forma rápida realizar la calificación de contenidos en base a dos posibles criterios,image valorando de una a cinco estrellas un contenido, o mediante “Me gusta”. De esta forma SharePoint va a ser capaz de determinar la relevancia de un contenido, lo que se traduce a aparecer antes en un resultado de búsqueda. Para que sea posible utilizar esta característica habrá que activarla en las opciones de la lista o de la biblioteca de documentos en cuestión. Además esta calificación de contenidos va a formar parte de la actividad del usuario.

image

Comunidades

En SharePoint 2013 el concepto de comunidades consiste en un sitio que trata de ofrecer una experiencia de foro de discusión, un lugar en el que hacer y responder a preguntas, y mantener conversaciones de temas concretos. Las comunidades se pueden crear fácilmente por los departamentos de una organización, consiguiendo que los usuarios compartan su experiencia en áreas específicas de conocimiento.

Cuando dentro de una misma organización existen o conviven diferentes imagecomunidades es recomendable crear un portal de comunidades, que va a hacer la función de “portada” o página desde la cual va a ser posible acceder a las distintas comunidades que la forman, mediante una descripción de la misma y su icono.

Dentro de una comunidad se pueden crear categorías, de forma que resulte más cómodo el gestionar y localizar la información. Es una forma de organizar las conversaciones que tienen lugar en la comunidad.

imageAdemás cada comunidad incluye un buscador para poder realizar búsqueda de información dentro de la misma. De forma rápida se pueden acceder a las últimas conversaciones y ver los miembros pertenecientes.

 

 

La verdad es que en esta última versión se ha dado una gran importancia a la parte social y comunicativa de la plataforma, lo que la dota de una gran herramienta para fomentar la comunicación vertical y horizontal de una organización. Si queréis más información podéis consultar los siguientes en laces que son en los que me he basado para escribir este post.

Información general sobre las comunidades en SharePoint Server 2013

Novedades de los sistemas sociales en SharePoint Server 2013

Libro: Beginning SharePoint 2013: Building Business Solutions

Introducción a los Servicios de Aplicaciones en SharePoint 2013

La arquitectura de Servicios de Aplicaciones de SharePoint 2013 no varía con respecto a la anterior versión. Si bien es cierto que aparecen nuevos servicios de aplicaciones, y que algunos de los actuales has sufrido mejoras, como es el caso del servicio de búsqueda.

Vamos a hacer un repaso de los servicios de aplicaciones o Application Services que nos vamos a encontrar en SharePoint 2013, así como resumir su función y sus principales cambios.

image

Los que están sombreados corresponden a los servicios de aplicación nuevos en SharePoint 2013. El resto seguro que os suenan de la versión anterior.

Translation Services

Este nuevo servicio pretende acercar al usuario los nuevos servicios de traducción basados en la nube con la capacidad de traducir no sólo los sitios, sino también su contenido. Proporciona un amplio conjunto de APIs, servicios REST y soporte CSOM con el objeto de que el contenido pueda ser pre-traducido cuando sea necesario, o traducido al vuelo por los usuarios, ya sea de forma síncrona, asíncrona o mediante streaming.

App Management

Las aplicaciones son el núcleo en SharePoint 2013. Una aplicación es una solución segura y centralizada, fácil de desarrollar y desplegar en el SharePoint Marketplace, monitorizar y eliminar. El servicio de App Management Service proporciona la capacidad de gestionar aplicaciones, permisos y licencias, ya sean aplicaciones del SharePoint Marketplace o internas.

image

Work Management

Este servicio va a proporcionar una manera de trabajar con eventos basados en acciones a través de algunos productos Microsoft, incluyendo Microsoft Exchange Server, Lync Server, Project Server y SharePoint Server 2013. Por ejemplo, un usuario puede editar sus tareas de Exchange a través de un teléfono móvil, y el servicio de Work Management va a agregar esas tareas a su lista de tareas en SharePoint.

image

Search

La búsqueda se ha mejorado al combinar dos motores de búsqueda, por un lado el motor de SharePoint Search y por otro el motor de FAST. Por lo tanto tenemos lo mejor de cada motor de búsqueda en SharePoint 2013. Vamos a encontrar bastantes cosas nuevas en la búsqueda.

- Mejoras en la interfaz de usuario (preview del contenido en función de su tipo).

- Nuevo modelo de ranking

- “Crawl continuo”, para eliminar la necesidad de programar crawls incrementales.

Business Connectivity Services

El servicio de conectividad empresarial introduce varias funcionalidades y mejoras nuevas. A destacar:

- Conectividad con orígenes OData

- Mejorada la compatibilidad con REST y el modelo de objetos cliente

Excel Services

Las mejoras en este servicio de interacción con libros Excel han sido entre otras:

- Mejoras de exploración de datos

- Mejoras de compatibilidad con los campos

- Permitir medidas calculadas y miembros calculados con Excel

- Mejorados los controles de escala de tiempo

- Mejorada la plantilla de sitio de BI para que sea más simple y más fácil de usar.

 

Como novedad, Microsoft en esta última versión ha modificado las Offimageice Web Apps, que anteriormente se consideraban como un servicio de aplicaciones, y en la nueva versión son un producto de servidor que se suministra por separado.

La gestión de estos servicios se realiza desde la Administración Central, igual que en la versión anterior.

image

En cuanto a las bases de datos que generan los servicios, aquí podéis ver un resumen por servicio. Como podréis ver, es muy similar a la versión de SharePoint 2010, lo que va a facilitar la tarea de migración si fuera necesario.

image

Espero que os sea de utilidad :)

 

Fuentes:

Explore SharePoint 2013

Capabilities and features in SharePoint 2013

Technical diagrams for SharePoint 2013

SharePoint 2013 y Visual Studio 2012

Ahora que va a ser común la opción de utilizar la última versión de Visual Studio para desarrollar con la nueva familia de productos Microsoft, entrimagee ellos Office y SharePoint, es posible que como yo, nos llevemos una sorpresa al instalar el producto y comprobar que no tenemos plantillas de proyecto disponibles para hacer proyectos de este tipo.

Solución muy sencilla. Vamos a utilizar el software Microsoft Web Platform Installer para instalar un complemento en Visual Studio 2012 que incluye las plantillas para los proyectos de SharePoint 2013 y la nueva versión de Office.

Podéis descargarlo desde: http://www.microsoft.com/web/downloads/platform.aspx

image

Una vez instalado, tenemos que localizar las “Microsoft Office Developer Tools for Visual Studio 2012”, e instalarlas:

image

Lo bueno de usar esta plataforma para realizar la instalación, es que nos va a detectar el software dependiente que necesitamos. Por lo tanto, cuando esto ocurra simplemente aceptamos y continuamos con la instalación:

image

image

Una vez instalados, cuando abramos de nuevo Visual Studio 2012 veremos que tenemos las nuevas plantillas de proyectos:

image

Instalación de SharePoint Server 2013

Vamos a realizar la instalación de la nueva versión de SharePoint Server en una imagemáquina virtual con el objeto de conocer las nuevas características y echar un vistazo a la nueva apariencia visual del producto.

Lo primero que vamos a hacer es buscar información sobre los requisitos de hardware y software que necesitaremos.

En la siguiente tabla se intenta recoger un resumen:

image

Lo primero que llama la atención es el hardware necesario, en cuanto a memoria RAM sobretodo. En esta nueva versión se necesita más hardware para tener SharePoint operativo con buen rendimiento.

Dependiendo del hardware que tengamos, yo recomiendo montar la máquina virtual con la versión de Windows Server 2008 y SQL Server 2008.

Para que os hagáis una idea, lo tengo instalado en una máquina virtual con unos 5,5 GB de RAM y 2 núcleos de CPU.

Lo siguiente va a ser montar la máquina virtual. Yo uso VirtualBox, y no he tenido problema alguno. Uso una máquina adicional como Controlador de Dominio y alguna característica más, pero no es necesario si se usan usuarios de la propia máquina o si se instala el controlador de dominio en la máquina de SharePoint. Es un post antiguo contaba como hacerlo (http://sharepointracks.blogspot.com.es/2012/03/sharepoint-server-2010-con-controlador.html)

La ventaja de la nueva versión de SharePoint es que en cuanto a arquitectura no difiere de su antecesor, por lo que el tema de configuración de servicios nos va a resultar muy familiar, así como el interfaz de la administración central.

Lo mismo ocurre con la instalación. Serán tres partes, instalación de prerrequisitos, instalación del producto, y configuración de la granja. El método de instalación es igual que en la versión 2010. Os pongo algunas pantallas:

image

image

image

image

image

image

image

En cuanto se lance el wizard de configuración de la granja empezaremos a ver los primeros cambios en la interfaz de la versión 2013 de SharePoint.

image

image

En general me parece bastante atractiva la nueva interfaz. Muy limpia e intuitiva. Seguimos teniendo la cinta de Ribbon con un ligero lavado de cara.

image

Como observación, comentar que si no disponéis de una máquina con suficiente RAM y buen procesador, va a resultar muy pesado trabajar con esta versión. Una buena oportunidad para ampliar o cambiar el equipo ;)

Más adelante veremos qué nuevos Service Applications o Servicios de Aplicaciones aparecen con esta nueva versión, y qué cambios importantes sufren algunos de los existentes.

Fuentes:

Requisitos de hardware y software para SharePoint 2013

Planear la compatibilidad con exploradores en SharePoint 2013

SharePoint 2013

SharePoint Between Racks © 2012
. Con la tecnología de Blogger.

¡Compártelo!


Estoy en LinkedIn!


Ve mi perfil en LinkedIn!