sábado, 26 de diciembre de 2015

Analizando como podemos consumir SharePoint OData con javascript

Pienso que es interesante las pruebas que realice para validar lo que me devuelve el servicio de Odata de SharePoint Online.

Cree una lista personalizada de SharePoint llamada Banners y adicione un par de columnas Url y Link.

Y el contenido es el siguiente: un solo elemento con una image y un enlace.


Si consumimos el servicio enviando la siguiente instrucción con jquery:
 
Lo que me devuelve al consumir json es lo siguiente:
{"odata.metadata":"https://infowareplus.sharepoint.com/sites/prueba/_api/$metadata#SP.ListData.BannersListItems"
,"value":[{"odata.type":"SP.Data.BannersListItem"
,"odata.id":"0589cb7b-2bb2-4ced-a7ea-704cd8e0dcea"
,"odata.etag":"\"4\""
,"odata.editLink":"Web/Lists(guid'2b6b9d83-4eeb-4716-86e4-5f6ee03a577e')/Items(1)"
,"FileSystemObjectType":0
,"Id":1
,"ContentTypeId":"0x01002C49C3B57506B541ABE2A829193FF712"
,"Title":"Noticias"
,"Imagen":{"Description":"Evento"
,"Url":"https://infowareplus.sharepoint.com/sites/prueba/SiteAssets/EventoMicrosoftAzureComunidadTecnica2.jpg"}
,"Link":{"Description":"Dirección de Prueba"
,"Url":"http://www.google.com"}
,"ID":1
,"Modified":"2015-12-14T19:54:56Z"
,"Created":"2015-12-10T20:47:48Z"
,"AuthorId":9
,"EditorId":9
,"OData__UIVersionString":"1.0"
,"Attachments":false
,"GUID":"f6a6e965-8f1a-436e-86c8-682e4f6368d5"}]}
Ahora observemos la siguiente prueba a tavés de javascript:





Create Object from JSON String













Lo que nos devuelve es lo siguiente:
{"odata.metadata":"https://infowareplus.sharepoint.com/sites/PRUEBA/_api/$metadata#SP.ListData.BannersListItems","value":[{"odata.type":"SP.Data.BannersListItem","odata.id":"0589cb7b-2bb2-4ced-a7ea-704cd8e0dcea","odata.etag":"'4'","odata.editLink":"Web/Lists(guid\'2b6b9d83-4eeb-4716-86e4-5f6ee03a577e\')/Items(1)","FileSystemObjectType":0,"Id":1,"ContentTypeId":"0x01002C49C3B57506B541ABE2A829193FF712","Title":"Noticias","Imagen":{"Description":"Evento","Url":"https://infowareplus.sharepoint.com/sites/prueba/SiteAssets/EventoMicrosoftAzureComunidadTecnica2.jpg"},"Link":{"Description":"Dirección de Prueba","Url":"http://www.google.com"},"ID":1,"Modified":"2015-12-14T19:54:56Z","Created":"2015-12-10T20:47:48Z","AuthorId":9,"EditorId":9,"OData__UIVersionString":"1.0","Attachments":false,"GUID":"f6a6e965-8f1a-436e-86c8-682e4f6368d5"}]}
Si accedemos  a la propiedad odata.detadata:
var obj = JSON.parse(text);
document.getElementById("demo2").innerHTML = obj["odata.metadata"];
Me retorna lo siguiente:
https://infowareplus.sharepoint.com/sites/prueba/_api/$metadata#SP.ListData.BannersListItems
Si accedemos la propiedad value obtendremos otro objeto de json que podemos acceder sus propiedades, de la siguiente forma:
var obj2 = obj["value"];
document.getElementById("demo3").innerHTML = obj2[0]["odata.type"];

Lo que nos retorna es lo siguiente:
SP.Data.BannersListItem
Asi podemos obtener otros atributos:
document.getElementById("demo4").innerHTML = obj2[0]["odata.id"];
document.getElementById("demo5").innerHTML = obj2[0]["odata.etag"];
document.getElementById("demo6").innerHTML = obj2[0]["odata.editLink"];
Lo que nos retorna es lo siguiente:
0589cb7b-2bb2-4ced-a7ea-704cd8e0dcea
'4'
Web/Lists(guid'2b6b9d83-4eeb-4716-86e4-5f6ee03a577e')/Items(1)
Y por ultimo vamos acceder la propiedad Imagen y Link de la siguiente forma:
var obj3 = obj2[0]["Imagen"];
document.getElementById("demo7").innerHTML = obj3["Url"];
var obj4 = obj2[0]["Link"];
document.getElementById("demo8").innerHTML = obj4["Url"];
Y los resultados serán las URL siguientes:
https://infowareplus.sharepoint.com/sites/PRUEBA/SiteAssets/EventoMicrosoftAzureComunidadTecnica2.jpg
http://www.google.com
Bueno como vemos podemos acceder con javascript la información que me devuelve el servicio OData de SharePoint, y como esta construído la estructura de datos de una lista Personalizada de SharePoint.  Para que observemos mejor la estructura lo mostraré de la siguiente forma:
'{
"odata.metadata":"https://infowareplus.sharepoint.com/sites/prueba/_api/$metadata#SP.ListData.BannersListItems"
,"value":[
     {"odata.type":"SP.Data.BannersListItem"
     ,"odata.id":"0589cb7b-2bb2-4ced-a7ea-704cd8e0dcea"
     ,"odata.etag":"\'4\'"
     ,"odata.editLink":"Web/Lists(guid\'2b6b9d83-4eeb-4716-86e4-5f6ee03a577e\')/Items(1)"
     ,"FileSystemObjectType":0
     ,"Id":1
     ,"ContentTypeId":"0x01002C49C3B57506B541ABE2A829193FF712"
     ,"Title":"Noticias"
     ,"Imagen":{"Description":"Evento","Url":"https://infowareplus.sharepoint.com/sites/prueba/SiteAssets/EventoMicrosoftAzureComunidadTecnica2.jpg"}
     ,"Link":{"Description":"Dirección de Prueba" ,"Url":"http://www.google.com"}
     ,"ID":1
     ,"Modified":"2015-12-14T19:54:56Z"
     ,"Created":"2015-12-10T20:47:48Z"
     ,"AuthorId":9
     ,"EditorId":9
     ,"OData__UIVersionString":"1.0"
     ,"Attachments":false
     ,"GUID":"f6a6e965-8f1a-436e-86c8-682e4f6368d5"}
     ]
}'
Espero que con eso los haya ayudado a comprender la estructura de las listas en SharePoint en formato JSON.
Hasta la próxma,
Juan Manuel Herrera Ocheita
 

P.D. utilice para las pruebas el siguiente enlace: http://www.w3schools.com/json/tryit.asp?filename=tryjson_parse .

No hay comentarios.: