Fazer solicitações em lote com as APIs REST

Este arquivo descreve como você pode fazer consultas e operações em lote na API REST/OData API do Microsoft SharePoint Online (e SharePoint 2016 e posterior no local) e no Subconjunto de arquivos e pastas da API REST do Office 365. Com essa técnica, você pode melhorar o desempenho de seu suplemento combinando várias opções em uma única solicitação para o servidor e uma única resposta.

Resumo executivo da opção $batch

O SharePoint Online (e o SharePoint 2016 local e posterior) e as APIs Office 365 implementam a opção de consulta OData$batch, para que você possa confiar na documentação oficial para obter detalhes sobre como usá-la. (Outra opção é consultar as postagens no blog de Andrew Connell sobre o assunto, começando em Parte 1 – Lote da API REST do SharePoint).

Confira a seguir um lembrete dos pontos principais:

  • A URL da solicitação consiste em URL de serviço raiz e a opção $batch, por exemplo https://fabrikam.sharepoint.com/_api/$batch ou https://fabrikam.office365.com/api/v1.0/me/$batch.
  • O corpo da solicitação HTTP é do tipo MIME multipart/mixed.
  • O corpo da solicitação é dividido em partes separadas umas das outras por uma cadeia de caracteres limite que é especificada no cabeçalho da solicitação.
  • Cada parte do corpo tem seu próprio verbo HTTP e URL REST e seu próprio corpo interno quando aplicável.
  • Uma parte pode ser uma operação de leitura (ou chamada de função) ou um ChangeSet de uma ou mais operações de gravação (ou chamadas de função). Um ChangeSet é um tipo MIME multipart/misturado com subpartas que contêm operações de inserção, atualização ou exclusão.

Importante

As APIs do SharePoint e do Office 365 não são transacionais e não dão suporte a funcionalidades "tudo ou nada" para ChangeSets que têm mais de uma operação nelas. Se qualquer uma das operações secundárias falhar, as outras ainda serão concluídas e não serão revertidas.

Exemplos de código

Exemplos de código que usam a opção de consulta $batch em APIs REST/OData do SharePoint:

Exemplo de solicitações e respostas

A seguir está um exemplo de uma solicitação HTTP bruta que faz duas operações GET em lote que recupera os títulos de todos os itens em duas listas diferentes.

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 seguir está um exemplo do corpo de uma solicitação HTTP bruta que faz operações DELETE de uma lista e GET da lista das listas do SharePoint.

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--

Atenção

As solicitações em lote podem reduzir o número de solicitações de ida e volta para a API REST do SharePoint. No entanto, o carregamento de vários arquivos em um único lote não é suportado.

Bibliotecas OData

As bibliotecas OData dão suporte a lotes de OData para vários idiomas. Confira dois exemplos a seguir. Para obter uma lista mais completa, confira Bibliotecas OData.

Confira também