Kürzlich hatte ich die Microsoft Big Days 2011 besucht und lernte in einem Vortrag die REST Web Services in SharePoint 2010 kennen. Ich war von dieser sehr einfachen Möglichkeit, SharePoint Content per URL abzufragen, so beeindruckt, dass ich hier einen kurzen Blog darüber verfasst habe.

Mittels REST kann eine Client Applikation ohne Verwendung des Client SharePoint Objekt Modells einfach per HTTP-Request Daten aus SharePoint auslesen. Die Daten können dabei auch gefiltert und sortiert werden.

Mit den in SharePoint 2010 vorhandenen Excel Services können auch Elemente in einer Excel-Datei angesprochen werden.

Damit REST in SharePoint 2010 funktioniert, müssen auf dem SharePoint Server die ADO.NET Data Services installiert sein, ansonsten erhält man bei einer REST-Abfrage nur eine SharePoint Fehler Seite.

Wie sieht nun so eine REST Abfrage aus?

Ausprobieren kann man die REST-Abfragen am besten in einem Webbrowser wie z. B. den Internet Explorer. Allerdings erkennt der Internet Explorer das REST-Ergebnis als RSS-Feed und versucht dieses Ergebnis dementsprechend zu rendern. In der RSS-Feed Ansicht ist jedoch nicht der komplette REST Output zu erkennen. Außerdem ist das REST-Ergebnis nicht immer RSS konform. Aus diesem Grund sollte im Internet Explorer die RSS-Ansicht für REST-Abfragen vorübergehend deaktiviert werden.

Feed and Web Slice Settings

Um SharePoint Inhalte abzufragen, steht das REST Web Service „ListData.svc“ zur Verfügung.

Eine Übersicht aller Listen in einer SharePoint Site erhält man mit folgender Abfrage:
http://intranet/_vti_bin/ListData.svc

Als Ergbnis bekommt man hier z.B.

Ergebnis 1

Die Elemente einer Liste können wie folgt abgefragt werden:
http://intranet/_vti_bin/ListData.svc/SharedDocuments

Zurück bekommt man hier alle Elemente der Liste inklusive Metadaten:

Ergebnis 2

Ein bestimmtes Listenelement kann einfach über seine ID angesprochen werden:
http://intranet/_vti_bin/ListData.svc/SharedDocuments(3)

Auch Metadaten eines Listenelementes, wie z. B. der Titel können über REST abgefragt werden:
http://intranet/_vti_bin/ListData.svc/SharedDocuments(3)/Title

Ergebnis:

Ergebnis 3

Mit folgender Abfrage wird nur mehr der Titel „Great White Gears Production Specs“ als Plain Text zurückgegeben:
http://intranet/_vti_bin/ListData.svc/SharedDocuments(3)/Title/$value

Auch ein Filtern oder Sortieren der REST Ergebnisses ist möglich:

Die Abfrage
http://intranet/_vti_bin/ListData.svc/SharedDocuments?$filter=Title%20eq%20’Great White Gears Production Specs‘
findet das Dokument mit dem Titel „Great White Gears Production Specs“.

Ein nach Titel sortiertes Ergbnis erhält man mit:
http://intranet/_vti_bin/ListData.svc/SharedDocuments?$orderby=Title

Eine genaue Beschreibung der REST Syntax kann man hier nachlesen:
http://msdn.microsoft.com/en-us/library/cc907912.aspx

Besonders cool finde ich die Möglichkeit, Inhalte aus einer in SharePoint abgelegten Excel-Datei per REST abzufragen. Mit folgendem URL kann z. B. ein Excel Chart im Browser angezeigt werden:
http://intranet/_vti_bin/ExcelRest.aspx/Shared%20Documents/Test.xlsx/Model/Charts(‚Chart%203‘)

Wenn man diesen Link in ein IMG-Tag in einem Content Editor Webpart verpack, kann man dieses Excel Chart auf einer SharePoint Seite anzeigen:

 

HTML Source

 

Bild 1

Ist doch cool, oder?