listItem: delta
Пространство имен: microsoft.graph
Получение только что созданных, обновленных или удаленных элементов списка без необходимости выполнять полное чтение всей коллекции элементов.
Для начала приложение вызывает delta
без параметров.
Служба начинает перечисление иерархии списка, возвращая страницы элементов, а также @odata.nextLink или @odata.deltaLink.
Приложение должно продолжать вызывать с помощью @odata.nextLink , пока не появится возвращенный @odata.deltaLink .
После получения всех изменений их можно применить к местному штату.
Чтобы проверить наличие изменений в будущем, вызовите delta
еще раз с помощью @odata.deltaLink из предыдущего ответа.
В разностном канале показано последнее состояние каждого элемента, а не каждое изменение. Если элемент был переименован дважды, он отображается только один раз с последним именем. Один и тот же элемент может отображаться несколько раз в разностном веб-канале по разным причинам. Следует использовать последний представленный вариант.
Элементы с этим свойством должны быть удалены из локального состояния.
Заметка: После синхронизации всех изменений следует удалить папку локально, только если она пуста.
Этот API доступен в следующих национальных облачных развертываниях.
Глобальная служба | Правительство США L4 | Правительство США L5 (DOD) | Китай управляется 21Vianet |
---|---|---|---|
✅ | ❌ | ❌ | ❌ |
Разрешения
Выберите разрешение или разрешения, помеченные как наименее привилегированные для этого API. Используйте более привилегированное разрешение или разрешения только в том случае, если это требуется приложению. Дополнительные сведения о делегированных разрешениях и разрешениях приложений см. в разделе Типы разрешений. Дополнительные сведения об этих разрешениях см. в справочнике по разрешениям.
Тип разрешения | Разрешения с наименьшими привилегиями | Более высокие привилегированные разрешения |
---|---|---|
Делегированные (рабочая или учебная учетная запись) | Sites.Read.All | Sites.ReadWrite.All |
Делегированные (личная учетная запись Майкрософт) | Не поддерживается. | Не поддерживается. |
Для приложений | Sites.Read.All | Sites.ReadWrite.All |
HTTP-запрос
GET /sites/{siteId}/lists/{listId}/items/delta
Параметры запроса
В URL-адрес запроса можно включить следующий необязательный параметр запроса.
Параметр | Тип | Описание |
---|---|---|
token | String | Если это не указано, перечисляет текущее состояние иерархии. Если latest значение , возвращает пустой ответ с последним разностным маркером. Если предыдущий разностный маркер, возвращает новое состояние после этого маркера. |
Этот метод также поддерживает $select
параметры запроса ,$expand
и $top
OData для настройки ответа.
Заголовки запросов
Заголовок | Значение |
---|---|
Авторизация | Bearer {token}. Обязательно. Дополнительные сведения о проверке подлинности и авторизации. |
Текст запроса
Не указывайте текст запроса для этого метода.
Отклик
В случае успеха этот метод возвращает код отклика 200 OK
и совокупность объектов listItem в тексте отклика.
Помимо коллекции объектов listItem , ответ также включает одно из следующих свойств.
Имя | Значение | Описание |
---|---|---|
@odata.nextLink | URL-адрес | URL-адрес для получения следующей доступной страницы изменений, если в текущем наборе есть дополнительные изменения. |
@odata.deltaLink | URL-адрес | URL-адрес, возвращаемый вместо @odata.nextLink после возврата всех текущих изменений. Используйте это свойство для чтения следующего набора изменений в будущем. |
В некоторых случаях служба возвращает 410 Gone
код ответа с ответом об ошибке, содержащим один из следующих кодов ошибок, и Location
заголовок, содержащий новый nextLink
, который запускает новое разностное перечисление. Это происходит, когда служба не может предоставить список изменений для заданного маркера; Например, если клиент пытается повторно использовать старый маркер после длительного отключения или состояние сервера изменилось и требуется новый маркер.
После завершения полного перечисления сравните возвращенные элементы с локальным состоянием и следуйте инструкциям на основе типа ошибки.
Тип "ошибка" | Инструкции |
---|---|
resyncChangesApplyDifferences | Замените все локальные элементы версиями с сервера (включая удаления), если вы уверены, что служба была обновлена с локальными изменениями при последней синхронизации. Отправьте все локальные изменения, не загруженные на сервер. |
resyncChangesUploadDifferences | Отправьте все локальные элементы, которые служба не вернула, и все элементы, отличные от версий сервера. Сохраните обе копии, если вы не знаете, какая из них является более актуальной. |
В дополнение к ошибкам повторной синхронизации и дополнительные сведения о том, как возвращаются ошибки, см. в статье Ответы на ошибки Microsoft Graph и типы ресурсов.
Примеры
Пример 1. Исходный запрос
В следующем примере показан первоначальный запрос и способ вызова этого API для определения локального состояния.
Запрос
В следующем примере показан начальный запрос.
GET https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com,2C712604-1370-44E7-A1F5-426573FDA80A,2D2244C3-251A-49EA-93A8-39E1C3A060FE/lists/22e03ef3-6ef4-424d-a1d3-92a337807c30/items/delta
Отклик
В следующем примере показан ответ, включающий первую страницу изменений и свойство @odata.nextLink , указывающее, что в текущем наборе элементов больше нет доступных элементов. Ваше приложение должно запрашивать значение URL-адреса, указанного в свойстве @odata.nextLink, пока не будут получены все страницы элементов.
HTTP/1.1 200 OK
Content-type: application/json
{
"value": [
{
"createdDateTime": "2020-06-02T22:46:58Z",
"eTag": "\"{12AD05BB-59B8-43AA-9456-77C44E9BC066},756\"",
"id": "1",
"lastModifiedDateTime": "2021-10-14T23:27:27Z",
"webUrl": "http://contoso.sharepoint.com/Shared%20Documents/TestFolder",
"createdBy": {
"user": {
"displayName": "John doe"
}
},
"parentReference": {
"id": "1",
"path": "Shared%20Documents",
"siteId": "12AD05BB-59B8-43AA-9456-77C44E9BC066"
},
"contentType": {
"id": "0x00123456789abc",
"name": "Folder"
}
},
{
"createdDateTime": "2020-06-02T22:46:58Z",
"eTag": "\"{12AD05BB-59B8-43AA-9456-77C44E9BC067},756\"",
"id": "2",
"lastModifiedDateTime": "2021-10-14T23:27:27Z",
"webUrl": "http://contoso.sharepoint.com/Shared%20Documents/TestItemA.txt",
"createdBy": {
"user": {
"displayName": "John doe"
}
},
"parentReference": {
"id": "2",
"path": "Shared%20Documents",
"siteId": "12AD05BB-59B8-43AA-9456-77C44E9BC066"
},
"contentType": {
"id": "0x00123456789abc",
"name": "Document"
}
},
{
"createdDateTime": "2020-06-02T22:46:58Z",
"eTag": "\"{12AD05BB-59B8-43AA-9456-77C44E9BC068},756\"",
"id": "3",
"lastModifiedDateTime": "2021-10-14T23:27:27Z",
"webUrl": "http://contoso.sharepoint.com/Shared%20Documents/TestItemB.txt",
"createdBy": {
"user": {
"displayName": "John doe"
}
},
"parentReference": {
"id": "3",
"path": "Shared%20Documents",
"siteId": "12AD05BB-59B8-43AA-9456-77C44E9BC066"
},
"contentType": {
"id": "0x00123456789abc",
"name": "Document"
}
}
],
"@odata.nextLink": "https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com,2C712604-1370-44E7-A1F5-426573FDA80A,2D2244C3-251A-49EA-93A8-39E1C3A060FE/lists/22e03ef3-6ef4-424d-a1d3-92a337807c30/items/delta?token=1230919asd190410jlka"
}
Пример 2. Запрос последней страницы
В следующем примере показан запрос, который получает последнюю страницу в наборе, и как вызвать этот API для обновления локального состояния.
Запрос
В следующем примере показан запрос после первоначального запроса.
GET https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com,2C712604-1370-44E7-A1F5-426573FDA80A,2D2244C3-251A-49EA-93A8-39E1C3A060FE/lists/22e03ef3-6ef4-424d-a1d3-92a337807c30/items/delta?token=1230919asd190410jlka
Отклик
В следующем примере показан ответ, указывающий, что элемент с именем TestItemB.txt
был удален, а элемент TestFolder
был добавлен или изменен между первоначальным запросом и этим запросом для обновления локального состояния.
Последняя страница элементов содержит свойство @odata.deltaLink , которое предоставляет URL-адрес, который можно использовать позже для получения изменений с текущего набора элементов.
HTTP/1.1 200 OK
Content-type: application/json
{
"value": [
{
"createdDateTime": "2020-06-02T22:46:58Z",
"eTag": "\"{12AD05BB-59B8-43AA-9456-77C44E9BC066},756\"",
"id": "1",
"lastModifiedDateTime": "2016-03-21T20:01:37Z",
"webUrl": "http://contoso.sharepoint.com/Shared%20Documents/TestFolder",
"createdBy": {
"user": {
"displayName": "John doe"
}
},
"parentReference": {
"id": "1",
"path": "Shared%20Documents",
"siteId": "12AD05BB-59B8-43AA-9456-77C44E9BC066"
},
"contentType": {
"id": "0x00123456789abc",
"name": "Folder"
}
},
{
"id": "3",
"parentReference": {
"siteId": "12AD05BB-59B8-43AA-9456-77C44E9BC066"
},
"contentType": {
"id": "0x00123456789abc",
"name": "Document"
},
"deleted": {
"state": "deleted"
}
}
],
"@odata.deltaLink": "https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com,2C712604-1370-44E7-A1F5-426573FDA80A,2D2244C3-251A-49EA-93A8-39E1C3A060FE/lists/22e03ef3-6ef4-424d-a1d3-92a337807c30/items/delta?token=1230919asd190410jlka"
}
Пример 3. Запрос разностной ссылки
В некоторых сценариях может потребоваться запросить текущее deltaLink
значение без предварительного перечисления всех элементов в списке. Это может быть полезно, если приложению требуется только знать об изменениях и не нужно знать о существующих элементах.
Чтобы получить последнюю версию deltaLink
, вызовите delta
с параметром ?token=latest
строки запроса .
Запрос
Ниже показан пример запроса.
GET https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com,2C712604-1370-44E7-A1F5-426573FDA80A,2D2244C3-251A-49EA-93A8-39E1C3A060FE/lists/22e03ef3-6ef4-424d-a1d3-92a337807c30/items/delta?token=latest
Отклик
Ниже показан пример отклика.
HTTP/1.1 200 OK
Content-type: application/json
{
"value": [ ],
"@odata.deltaLink": "https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com,2C712604-1370-44E7-A1F5-426573FDA80A,2D2244C3-251A-49EA-93A8-39E1C3A060FE/lists/22e03ef3-6ef4-424d-a1d3-92a337807c30/items/delta?token=1230919asd190410jlka"
}