SharePoint: API REST

In questo capitolo, tratteremo le API REST. Questa non è un'API tradizionale, in cui abbiamo un set di librerie che contengono tipi e quei tipi contengono proprietà e metodi.

L'API REST è implementata come servizio web incentrato sui dati basato su Open Data Protocol o OData. Il modo in cui questi servizi Web funzionano, utilizzano ciascuna risorsa nel sistema, è indirizzabile da un URL specifico che si passa al server.

Esaminiamo questo aspetto in Internet Explorer in cui è aperto il sito di SharePoint.

Step 1 - Se stai usando Internet Explorer, vai alle impostazioni di Internet Explorer e sulla scheda Contenuto, seleziona le impostazioni per Feed e Web Slice come mostrato nella schermata qui sotto.

Vedrai la seguente finestra di dialogo. Assicurarsifeed reading view è off e fare clic su OK.

Step 2 - Ora cambiamo l'URL nell'URL del sito + / _ api / web e premiamo Invio.

Ora dovresti ottenere una visualizzazione simile allo screenshot seguente.

Vogliamo informazioni sul web corrente o sul sito attuale. Pertanto, l'URL del sito + / _ api è l'URL di base per l'API REST di SharePoint 2013 e il Web è la nostra query. Vogliamo informazioni sul web attuale.

Otteniamo indietro un documento XML e se scorriamo verso il basso, otterremo informazioni sul nostro web attuale.

Successivamente, se desideri conoscere gli elenchi nel Web, puoi aggiungere gli elenchi al tuo URL. Invece di informazioni su un singolo oggetto, otterremo una raccolta di informazioni su tutti gli elenchi nel sito corrente.

Quando stavamo utilizzando il browser, stavamo inviando richieste get al server, il che significa che vogliamo recuperare le informazioni. Tuttavia, possiamo anche fare il resto delle operazioni CRUD standard.

Recupera le risorse utilizzando l'API REST

L'API REST di SharePoint 2013 non espone i metadati. Pertanto, quando lavoriamo con esso in Managed Code, non possiamo usare Visual Studio per generare un proxy di servizio utilizzando la finestra di dialogo di riferimento del servizio. Invece, possiamo usare un tipo come il client web dell'oggetto richiesta web http per inviare una richiesta al server e ottenere semplicemente i risultati grezzi.

Se questi risultati vengono restituiti come XML o JSON è determinato dall'intestazione di accettazione che inviamo insieme alla richiesta.

  • Se recuperiamo XML, possiamo utilizzare LINQ to XML per recuperare le informazioni dalla risposta di cui abbiamo bisogno per la nostra applicazione.

  • Se recuperiamo JSON, possiamo utilizzare uno dei vari serializzatori JSON per analizzare il JSON in oggetti .NET e quindi utilizzarlo per recuperare le informazioni di cui abbiamo bisogno.

Quando si lavora con l'API REST in JavaScript, è possibile utilizzare jQuery o l'oggetto SP.RequestExecutor per effettuare la chiamata al servizio. Proprio come nell'esempio del codice gestito, possiamo controllare se recuperare XML o JSON utilizzando l'intestazione di accettazione. Poiché, la maggior parte delle volte, lavoriamo in JavaScript, vorremo recuperare JSON.

L'altra cosa da notare è che quando crei l'URL del servizio, possiamo usare il file _spPageContextInfooggetto per ottenere l'URL assoluto dal sito e quindi aggiungere semplicemente l'URL del servizio più la query ad esso. Questo perché il servizio API REST non espone metadati e non è possibile creare un riferimento al servizio in Visual Studio, l'utilizzo dell'API REST in Managed Code è davvero un non-starter.

Diamo un'occhiata alla chiamata dell'API REST da JavaScript creando un nuovo progetto.

Step 1 - Seleziona App for SharePointnel riquadro centrale e inserisci il nome per il tuo progetto. ClicOK.

Step 2 - Inserisci l'URL del tuo sito e seleziona il file SharePoint – hostedopzione e fare clic su Avanti. Fare clic su Fine.

Step 3 - Una volta creato il progetto, apriamo la pagina Default.aspx, che si trova in Pages in Esplora soluzioni, e aggiungiamo un pulsante.

Ecco l'implementazione completa del file Default.aspx.

<%-- The following 4 lines are ASP.NET directives needed when using SharePoint
   components --%>

<%@ Page Inherits = ”Microsoft.SharePoint.WebPartPages.WebPartPage,
   Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral,
   PublicKeyToken = 71e9bce111e9429c” MasterPageFile = ”~masterurl/default.master”
   Language = ”C#” %>

<%@ Register TagPrefix = ”Utilities” Namespace = ”Microsoft.SharePoint.Utilities”
   Assembly = ”Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral,
   PublicKeyToken = 71e9bce111e9429c” %>

<%@ Register TagPrefix = ”WebPartPages”
   Namespace = ”Microsoft.SharePoint.WebPartPages” Assembly = ”Microsoft.SharePoint,
   Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c” %>

<%@ Register TagPrefix = ”SharePoint” Namespace = ”Microsoft.SharePoint.WebControls”
   Assembly = ”Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral,
   PublicKeyToken = 71e9bce111e9429c” %>

<%-- The markup and script in the following Content element will be placed in
   the <head> of the page --%>

<asp:Content ContentPlaceHolderID = ”PlaceHolderAdditionalPageHead”
   runat = ”server”>
   <script type = ”text/javascript” src = ”../Scripts/jquery-1.9.1.min.js”></script>
   <SharePoint:ScriptLink name = ”sp.js” runat = ”server” OnDemand = ”true”
      LoadAfterUI = ”true” Localizable = ”false” />
   <meta name = ”WebPartPageExpansion” content = ”full” />
   <!–Add your CSS styles to the following file ->
   <link rel = ”Stylesheet” type = ”text/css” href = ”../Content/App.css” />
   <!–Add your JavaScript to the following file ->
   <script type = ”text/javascript” src = ”../Scripts/App.js”></script>
</asp:Content>

<%-- The markup in the following Content element will be placed in the TitleArea
   of the page --%>

<asp:Content ContentPlaceHolderID = ”PlaceHolderPageTitleInTitleArea”
   runat = ”server”>
   Page Title
</asp:Content>

<%-- The markup and script in the following Content element will be placed in
   the <body> of the page --%>

<asp:Content ContentPlaceHolderID = ”PlaceHolderMain” runat = ”server”>
   <div>
      <p id = ”message”>
         <!–The following content will be replaced with the user name when
            you run the app – see App.js -> initializing…
      </p>
      <input id = ”loadButton” type  = ”button” value = ”Load” />
   </div>
</asp:Content>

Step 4 - Apri il file App.js, che si trova sotto Script in Esplora soluzioni e sostituiscilo con il codice seguente.

JQuery(document).ready(function () {
   JQuery("#loadButton").click(usingLoad)
});

function usingLoad() {
   var context = SP.ClientContext.get_current();
   var web = context.get_web();
   context.load(web);
   context.executeQueryAsync(success, fail);
   
   function success() {
      var message = jQuery("#message");
      message.text(web.get_title());
      message.append("<br/>");
      message.append(lists.get_count());
   }
   function fail(sender, args) {
      alert("Call failed. Error: " + args.get_message());
   }
}

Stiamo usando jQuery per creare il file document.readyfunzione. Qui, vogliamo solo collegare il gestore dell'evento clic al pulsante. Quindi, abbiamo usato il selettore per ottenere il fileloadButton e poi abbiamo aggiunto il gestore di eventi click usando Load.

Quindi, quando facciamo clic sul pulsante, vogliamo fare la stessa cosa che abbiamo fatto nella versione gestita della demo, vogliamo mostrare il titolo del web.

Step 5 - Pubblica la tua applicazione e vedrai il seguente file -

Step 6 - Trascina questo file nella pagina delle app del tuo sito di SharePoint.

Vedrai il file JavaScriptDemo nella lista.

Step 7- Fare clic su Contenuto del sito nel riquadro di sinistra e quindi selezionare aggiungi un'app. Clicca ilJavaScriptDemo icona.

Step 8 - Fare clic su Trust it.

Step 9- Ora vedrai la tua app. Fare clic sull'icona dell'app.

Step 10 - Quando fai clic sul pulsante Carica, il testo verrà aggiornato.

Puoi vedere il testo aggiornato.