Heute im letzten Teil der Blogserie wollen wir noch etwas in die Entwicklung von SharePoint Hosted Apps schauen. Dort unterscheiden wir grundsätzlich zwei verschiedene Zugriffsarten mit der man über Client Script auf die SharePointdaten zugreifen kann.
Die Erste, Client Side Object Model (CSOM), ist schon aus älteren Versionen von SharePoint bekannt. Teile dieser Bibliothek können schon in SharePoint 2010 verwendet werden um zum Beispiel Funktionen in ein Content Viewing – Webpart auszulagern. CSOM greift auf den Client.svc zu.
Die zweite Möglichkeit mit SharePoint über Client Script zu interagieren ist die neue REST-Schnittstelle. Diese Schnittstelle ist eigentlich nur eine Abstraktion des Client.svc. Dabei kann der Aufruf an _vti_bin/Client.svc durch _api ersetzt werden.
Laut MSDN sind folgende Dinge mit dem Client Side Object Model möglich.
Nicht alles davon ist mit REST möglich. Unter folgendem Link können Sie die unterschiedlichen API-Aufrufe anschauen: http://msdn.microsoft.com/en-us/library/office/dn268594.aspx
Am Beispiel möchte ich den Unterschied von CSOM und REST verdeutlichen und einen kleinen Einblick geben, wie man damit arbeitet. Da lesende Operation immer recht einfach sind (und Beispiele dafür auch schon in vorherigen Teilen zu erkennen sind), möchte ich heute zeigen wie eine Ankündigungsliste erstellt werden kann. Darauf werde ich dann auch ein erstes Element erstellen.
Zunächst in CSOM:
- function createListCsom() {
- var hostcontext = new SP.AppContextSite(context, hostweburl);
- // Create list information
- var listCreationInfo = new SP.ListCreationInformation();
- listCreationInfo.set_title(‘AnnouncementsCSOM’);
- listCreationInfo.set_templateType(SP.ListTemplateType.announcements);
- var lists = hostcontext.get_web().get_lists();
- // Add list to web
- var announcementsList = lists.add(listCreationInfo);
- // add listitem to list
- var newItem = announcementsList.addItem(new SP.ListItemCreationInformation());
- newItem.set_item(‘Title’, ‘Hello World!’);
- newItem.update();
- // send to server for execution
- context.executeQueryAsync(
- Function.createDelegate(this, this.onQuerySucceeded),
- Function.createDelegate(this, this.onQueryFailed)
- );
- }
Nun mit REST:
- function createListRest() {
- // create urls – for listcreation you must go to /web/lists
- var baseUrl = appweburl + “/_api/SP.AppContextSite(@target)/web/lists”;
- var target = “?@target=’” + hostweburl + “‘”;
- // send call to sahrepoint
- $.ajax({
- url: baseUrl + target,
- type: “POST”,
- // header information, Requestdigest is important
- headers: {
- “Accept”: “application/json;odata=verbose”,
- “content-type”: “application/json;odata=verbose”,
- “X-RequestDigest”: $(“#__REQUESTDIGEST”).val()
- },
- // the properties of the new list
- data: JSON.stringify({
- ‘__metadata’: { ‘type’: ‘SP.List’ }, ‘AllowContentTypes’: true,
- ‘BaseTemplate’: 104, ‘ContentTypesEnabled’: true, ‘Description’: ‘My Announcementlist’, ‘Title’: ‘AnnouncementsREST’
- }),
- success: createListItemRest,
- error: function (data, errorCode, errorMessage) {
- alert(errorMessage + ” “ + data.responseText);
- }
- });
- }
- function createListItemRest() {
- // create urls, you must use /web/lists/getbyTitle(listname)/items
- var baseUrl = appweburl + “/_api/SP.AppContextSite(@target)/web/lists”;
- var target = “?@target=’” + hostweburl + “‘”;
- var url = baseUrl + “/getbytitle(‘AnnouncementsREST’)/items” + target;
- $.ajax({
- url: url,
- type: “POST”,
- // properties of the new listitem
- data: JSON.stringify({
- ‘__metadata’: { ‘type’: GetItemTypeForListName(“AnnouncementsREST”) },
- ‘Title’: ‘Hello World!’
- }),
- headers: {
- “accept”: “application/json;odata=verbose”,
- “content-type”: “application/json;odata=verbose”,
- “X-RequestDigest”: $(“#__REQUESTDIGEST”).val()
- },
- success: SetMessage(“AnnouncementsREST”),
- error: function (data, errorCode, errorMessage) {
- alert(errorMessage + ” “ + data.responseText);
- }
- });
Wie Sie schon sehen können, ist der Code mit der CSOM-Methode sehr viel kompakter und meiner Meinung nach auch viel einfacher zu debuggen.
Als kleines Weihnachtsgeschenk habe ich Ihnen die App als SourceCode zusammengepackt: http://blogs.myfirstsharepoint.de/wp-content/uploads/2013/12/ListCreationApp.zip
Dies war der letzte Teil meiner Blogserie zur Erstellung von Apps für SharePoint 2013. Ich hoffe die Beispiele helfen Ihnen weiter oder geben Ihnen einen Startpunkt für Ihre Entwicklung mit SharePoint 2013.
Dann kann ich nur noch fröhliche Weihnachten wünschen…
Beiträge der Blogserie:
- Vorbereitung und Bereitstellung einer Provider Hosted App
- Provider Hosted Apps und ASP.Net MVC
- Bereitstellung und Entwicklung der Applikation auf einem IIS
- SharePoint Hosted Apps – Zugriff auf das HostWeb
- SharePoint Hosted Apps – AppContext bei CSOM und REST
- SharePoint Hosted Apps – Entwicklung mit CSOM und REST
Quellen:
http://msdn.microsoft.com/en-us/library/office/dn268594.aspx
http://msdn.microsoft.com/en-us/library/office/jj163201.aspx
http://msdn.microsoft.com/en-us/library/office/jj164022.aspx
http://msdn.microsoft.com/en-us/library/office/dn292552.aspx