Quantcast
Channel: Entwicklung – HanseVision Blog
Viewing all articles
Browse latest Browse all 46

Blogserie: Apps in SharePoint 2013 – Teil 6: SharePoint Hosted Apps – Entwicklung mit CSOM und REST

$
0
0

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.

CSOM

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.

REST

Laut MSDN sind folgende Dinge mit dem Client Side Object Model möglich.

CSOM1

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:

  1. function createListCsom() { 
  2.     var hostcontext = new SP.AppContextSite(context, hostweburl); 
  3.  
  4.     // Create list information 
  5.     var listCreationInfo = new SP.ListCreationInformation(); 
  6.     listCreationInfo.set_title(‘AnnouncementsCSOM’); 
  7.     listCreationInfo.set_templateType(SP.ListTemplateType.announcements); 
  8.  
  9.     var lists = hostcontext.get_web().get_lists(); 
  10.     // Add list to web 
  11.     var announcementsList = lists.add(listCreationInfo); 
  12.  
  13.     // add listitem to list 
  14.     var newItem = announcementsList.addItem(new SP.ListItemCreationInformation()); 
  15.     newItem.set_item(‘Title’, ‘Hello World!’); 
  16.     newItem.update(); 
  17.  
  18.     // send to server for execution 
  19.     context.executeQueryAsync( 
  20.        Function.createDelegate(this, this.onQuerySucceeded), 
  21.        Function.createDelegate(this, this.onQueryFailed) 
  22.     ); 

Nun mit REST:

  1. function createListRest() { 
  2.     // create urls – for listcreation you must go to /web/lists 
  3.     var baseUrl = appweburl + “/_api/SP.AppContextSite(@target)/web/lists”
  4.     var target = “?@target=’” + hostweburl + “‘”
  5.  
  6.     // send call to sahrepoint 
  7.     $.ajax({ 
  8.         url: baseUrl + target, 
  9.         type: “POST”
  10.         // header information, Requestdigest is important 
  11.         headers: { 
  12.             “Accept”: “application/json;odata=verbose”
  13.             “content-type”: “application/json;odata=verbose”
  14.             “X-RequestDigest”: $(“#__REQUESTDIGEST”).val() 
  15.         }, 
  16.         // the properties of the new list 
  17.         data: JSON.stringify({ 
  18.             ‘__metadata’: { ‘type’: ‘SP.List’ }, ‘AllowContentTypes’: true
  19.             ‘BaseTemplate’: 104, ‘ContentTypesEnabled’: true, ‘Description’: ‘My Announcementlist’, ‘Title’: ‘AnnouncementsREST’ 
  20.         }), 
  21.         success: createListItemRest, 
  22.         error: function (data, errorCode, errorMessage) { 
  23.             alert(errorMessage + ” “ + data.responseText); 
  24.         } 
  25.     }); 
  26.  
  27. function createListItemRest() { 
  28.     // create urls, you must use /web/lists/getbyTitle(listname)/items 
  29.     var baseUrl = appweburl + “/_api/SP.AppContextSite(@target)/web/lists”
  30.     var target = “?@target=’” + hostweburl + “‘”
  31.     var url = baseUrl + “/getbytitle(‘AnnouncementsREST’)/items” + target; 
  32.  
  33.     $.ajax({ 
  34.         url: url, 
  35.         type: “POST”
  36.         // properties of the new listitem 
  37.         data: JSON.stringify({ 
  38.             ‘__metadata’: { ‘type’: GetItemTypeForListName(“AnnouncementsREST”) }, 
  39.             ‘Title’: ‘Hello World!’ 
  40.         }), 
  41.         headers: { 
  42.             “accept”: “application/json;odata=verbose”
  43.             “content-type”: “application/json;odata=verbose”
  44.             “X-RequestDigest”: $(“#__REQUESTDIGEST”).val() 
  45.         }, 
  46.         success: SetMessage(“AnnouncementsREST”), 
  47.         error: function (data, errorCode, errorMessage) { 
  48.             alert(errorMessage + ” “ + data.responseText); 
  49.         } 
  50.     }); 

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:

  1. Vorbereitung und Bereitstellung einer Provider Hosted App
  2. Provider Hosted Apps und ASP.Net MVC
  3. Bereitstellung und Entwicklung der Applikation auf einem IIS
  4. SharePoint Hosted Apps – Zugriff auf das HostWeb
  5. SharePoint Hosted Apps – AppContext bei CSOM und REST
  6. SharePoint Hosted Apps – Entwicklung mit CSOM und REST

 

Quellen:

http://www.microsoft.com/resources/msdn/en-us/office/media/courseviewer/CourseViewerR5MOD1.htm?CourseXmlFile=http://www.microsoft.com/resources/msdn/en-us/office/media/courseviewer/SharePoint2013TrainingDeveloper_MOD1.xml&Operation=LoadModule&Module=3

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

http://blogs.msdn.com/b/uksharepoint/archive/2013/02/22/manipulating-list-items-in-sharepoint-hosted-apps-using-the-rest-api.aspx


Viewing all articles
Browse latest Browse all 46