Realizar solicitudes de lote con las API de RESTMake batch requests with the REST APIs

En este artículo, se describe cómo puede procesar en lote consultas y operaciones en la API de REST/OData de Microsoft SharePoint Online (y SharePoint 2016 local y versiones posteriores) y el Subconjunto de archivos y carpetas de las API de REST de Office 365.This article describes how you can batch queries and operations against the REST/OData API of Microsoft SharePoint Online (and on-premises SharePoint 2016 and later) and the Files and folders subset of the Office 365 REST APIs. Con esta técnica, puede mejorar el rendimiento del complemento al combinar muchas operaciones en una sola solicitud al servidor y una sola respuesta.With this technique you can improve the performance of your add-in by combining many operations into a single request to the server and a single response back.

Resumen ejecutivo de la opción $batchExecutive summary of the $batch option

SharePoint Online (y SharePoint 2016 local y versiones posteriores) y las API de Office 365 implementan la opción de consulta $batch de OData, de modo que puede confiar en la documentación oficial para obtener detalles sobre su modo de uso.SharePoint Online (and on-premises SharePoint 2016 and later) and the Office 365 APIs implement the OData $batch query option, so you can rely on the official documentation for details about how to use it. (Otra opción es ver las publicaciones del blog de Andrew Connell sobre el tema comenzando desde la Parte 1 sobre el procesamiento por lotes de la API de REST de SharePoint).(Another option is to see Andrew Connell's blog posts on the subject beginning at Part 1 - SharePoint REST API Batching.)

A continuación, se presenta un recordatorio de los puntos más importantes:The following is a reminder of the major points:

  • La dirección URL de solicitud consta de la dirección URL de servicio de raíz y la opción $batch. Por ejemplo: https://fabrikam.sharepoint.com/_api/$batch o https://fabrikam.office365.com/api/v1.0/me/$batch.The request URL consists of the root service URL and the $batch option; for example, https://fabrikam.sharepoint.com/_api/$batch or https://fabrikam.office365.com/api/v1.0/me/$batch.

  • El cuerpo de la solicitud HTTP es de tipo MIME de varias partes/mixta.The HTTP request body is MIME type multipart/mixed.

  • El cuerpo de la solicitud está dividido en partes separadas unas de otras por una cadena de límite que se especifica en el encabezado de la solicitud.The body of the request is divided into parts that are separated from each other by a boundary string that is specified in the header of the request.

  • Cada parte del cuerpo tiene su propio verbo HTTP y su propia dirección URL REST (cuando corresponde, también tiene su propio cuerpo interno).Each part of the body has its own HTTP verb and REST URL, and its own internal body when applicable.

  • Una parte puede ser una operación de lectura (o invocación a función), o un ChangeSet de una o más operaciones de escritura (o invocaciones a funciones).A part can be a read operation (or function invocation), or a ChangeSet of one or more write operations (or function invocations). Un ChangeSet es en sí mismo un tipo MIME de varias partes/mixta con subpartes que contienen operaciones para insertar, actualizar o eliminar.A ChangeSet is itself a MIME type multipart/mixed with subparts that contain insert, update, or delete operations.

Importante

En este momento, SharePoint y las API de Office 365 no admiten la característica "todo o nada" para ChangeSets que tengan más de una operación dentro.At this time, SharePoint and Office 365 APIs do not support "all or nothing" functionality for ChangeSets that have more than one operation within them. Si se produce un error en alguna de las operaciones secundarias, las otras aún se completan y no se revierten.If any of the child operations fails, the others still complete and are not rolled back.

Ejemplos de códigoCode samples

Ejemplos de código que usan la opción de consulta $batch en las API de REST/OData de SharePoint:Samples of code that uses the $batch query option against the SharePoint REST/OData APIs:

Solicitudes de ejemplo y respuestasExample requests and responses

A continuación, se presenta un ejemplo de una solicitud HTTP sin procesar que procesa en lote dos operaciones GET que recuperan los títulos de todos los elementos de dos listas diferentes.The following is an example of a raw HTTP request that batches two GET operations that retrieve the titles of all the items in two different lists.

POST https://fabrikam.sharepoint.com/_api/$batch HTTP/1.1
Authorization: Bearer <access token omitted>
Content-Type: multipart/mixed; boundary=batch_e3b6819b-13c3-43bb-85b2-24b14122fed1
Host: fabrikam.sharepoint.com
Content-Length: 527
Expect: 100-continue

--batch_e3b6819b-13c3-43bb-85b2-24b14122fed1
Content-Type: application/http
Content-Transfer-Encoding: binary

GET https://fabrikam.sharepoint.com/_api/Web/lists/getbytitle('Composed%20Looks')/items?$select=Title HTTP/1.1

--batch_e3b6819b-13c3-43bb-85b2-24b14122fed1
Content-Type: application/http
Content-Transfer-Encoding: binary

GET https://fabrikam.sharepoint.com/_api/Web/lists/getbytitle('User%20Information%20List')/items?$select=Title HTTP/1.1

--batch_e3b6819b-13c3-43bb-85b2-24b14122fed1--


A continuación, se presenta un ejemplo del cuerpo de una solicitud HTTP sin procesar que procesa en lote una DELETE de una lista y una GET de la lista de listas de SharePoint.The following is an example of the body of a raw HTTP request that batches a DELETE of a list and a GET of the SharePoint list-of-lists.

POST https://fabrikam.sharepoint.com/_api/$batch HTTP/1.1
Authorization: Bearer <access token omitted>
Content-Type: multipart/mixed; boundary=batch_7ba8d60b-efce-4a2f-b719-60c27cc0e70e
Host: fabrikam.sharepoint.com
Content-Length: 647
Expect: 100-continue

--batch_7ba8d60b-efce-4a2f-b719-60c27cc0e70e
Content-Type: multipart/mixed; boundary=changeset_efb6b37c-a5cd-45cb-8f5f-4d648006e65d

--changeset_efb6b37c-a5cd-45cb-8f5f-4d648006e65d
Content-Type: application/http
Content-Transfer-Encoding: binary

DELETE https://fabrikam.sharepoint.com/_api/Web/lists/getbytitle('OldList') HTTP/1.1
If-Match: "1"

--changeset_efb6b37c-a5cd-45cb-8f5f-4d648006e65d--
--batch_7ba8d60b-efce-4a2f-b719-60c27cc0e70e
Content-Type: application/http
Content-Transfer-Encoding: binary

GET https://fabrikam.sharepoint.com/_api/Web/lists HTTP/1.1

--batch_7ba8d60b-efce-4a2f-b719-60c27cc0e70e--

Bibliotecas de ODataOData libraries

Las bibliotecas de OData admiten el procesamiento por lotes de OData para muchos lenguajes.OData libraries support OData batching for many languages. A continuación puede ver dos ejemplos.Following are two examples. Para ver una lista más completa, vea Bibliotecas de OData.For a more complete list, see OData Libraries.

Ver tambiénSee also