SharePoint: API REST

En este capítulo, cubriremos las API REST. Esta no es una API tradicional, donde tenemos un conjunto de bibliotecas que contienen tipos y esos tipos contienen propiedades y métodos.

La API REST se implementa como un servicio web centrado en datos basado en el protocolo de datos abiertos o OData. La forma en que funcionan estos servicios web, el uso de cada recurso en el sistema es direccionable por una URL específica que usted pasa al servidor.

Veamos esto en Internet Explorer en el que el sitio de SharePoint está abierto.

Step 1 - Si está utilizando Internet Explorer, vaya a la configuración de Internet Explorer y en la pestaña Contenido, seleccione la configuración de Feeds y Web Slices como se muestra en la captura de pantalla siguiente.

Verá el siguiente cuadro de diálogo. Asegurarsefeed reading view es off y haga clic en Aceptar.

Step 2 - Ahora cambiemos la URL a la URL del sitio + / _ api / web y presione Enter.

Ahora debería obtener una vista similar a la siguiente captura de pantalla.

Queremos información sobre la web actual o el sitio actual. Por lo tanto, la URL del sitio + / _ api es la URL base para la API REST de SharePoint 2013 y la web es nuestra consulta. Queremos información sobre la web actual.

Recuperamos un documento XML y si nos desplazamos hacia abajo, obtendremos información sobre nuestra web actual.

A continuación, si desea conocer las listas en la web, puede agregar las listas a su URL. En lugar de información sobre un objeto individual, obtendremos una colección de información sobre todas las listas del sitio actual.

Cuando usábamos el navegador, emitíamos solicitudes de obtención al servidor, lo que significa que queremos recuperar información. Sin embargo, también podemos hacer el resto de las operaciones CRUD estándar.

Recuperar recursos usando la API REST

La API REST de SharePoint 2013 no expone metadatos. Por lo tanto, cuando estamos trabajando con él en código administrado, no podemos usar Visual Studio para generar un proxy de servicio usando el diálogo de referencia de servicio. En su lugar, podemos usar un tipo como el cliente web del objeto de solicitud web http para enviar una solicitud al servidor y simplemente recuperar los resultados sin procesar.

Si esos resultados se devuelven como XML o JSON, lo determina el encabezado de aceptación que enviamos junto con la solicitud.

  • Si recuperamos XML, entonces podemos usar LINQ to XML para recuperar la información de la respuesta que necesitamos para nuestra aplicación.

  • Si recuperamos JSON, entonces podemos usar uno de los varios serializados JSON para analizar el JSON en objetos .NET y luego usarlo para recuperar la información que necesitamos.

Cuando trabajamos con la API REST en JavaScript, podemos usar jQuery o el objeto SP.RequestExecutor para realizar la llamada al servicio. Al igual que en el ejemplo del Código administrado, podemos controlar si recuperamos XML o JSON usando el encabezado de aceptación. Dado que estamos trabajando en JavaScript la mayoría de las veces, vamos a querer recuperar JSON.

La otra cosa a tener en cuenta es que cuando está creando la URL del servicio, podemos usar el _spPageContextInfoobjeto para obtener la URL absoluta del sitio y luego agregarle la URL del servicio más la consulta. Esto se debe a que el servicio de la API REST no expone los metadatos y no puede crear una referencia de servicio en Visual Studio, el uso de la API REST en el código administrado no es nada básico.

Echemos un vistazo a cómo llamar a la API REST desde JavaScript creando un nuevo proyecto.

Step 1 - Seleccionar App for SharePointen el panel central e ingrese el nombre de su proyecto. Hacer clicOK.

Step 2 - Ingrese la URL de su sitio y seleccione el SharePoint – hostedopción y haga clic en Siguiente. Haga clic en Finalizar.

Step 3 - Una vez creado el proyecto, abramos la página Default.aspx, que está en Páginas en el Explorador de soluciones y agreguemos un botón.

Aquí está la implementación completa del archivo 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 - Abra el archivo App.js, que se encuentra en Script en el Explorador de soluciones y reemplácelo con el siguiente código.

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());
   }
}

Estamos usando jQuery para crear el document.readyfunción. Aquí, solo queremos adjuntar el controlador de eventos de clic al botón. Por lo tanto, hemos utilizado el selector para obtener elloadButton y luego hemos agregado el controlador de eventos de clic usando Load.

Entonces, cuando hacemos clic en el botón, queremos hacer lo mismo que hicimos en la versión administrada de la demostración, queremos mostrar el título de la web.

Step 5 - Publica tu aplicación y verás el siguiente archivo -

Step 6 - Arrastre este archivo a la página de aplicaciones de su sitio de SharePoint.

Verás el archivo JavaScriptDemo en la lista.

Step 7- Haga clic en Contenido del sitio en el panel izquierdo y luego seleccione agregar una aplicación. Haga clic en elJavaScriptDemo icono.

Step 8 - Click Trust it.

Step 9- Ahora verá su aplicación. Haga clic en el icono de la aplicación.

Step 10 - Al hacer clic en el botón Cargar, se actualizará el texto.

Puedes ver el texto actualizado.