Путаница с дельта-запросом пользователя

При использовании deltaLink, полученного из запроса к конечной точке users/delta в API Microsoft graph версии 1.0, возвращают ли последующие запросы (с использованием deltaLink), возвращаемые из каждого предыдущего запроса, изменения с момента запроса исходный или с последнего запроса?

Я не понимаю, каков предполагаемый сценарий для конечной точки. Является ли токен долгоживущей вещью, которую вы используете в своем приложении какое-то время, чтобы продолжать повторно использовать для отслеживания изменений после некоторой начальной синхронизации, или это временный метод для просмотра изменений между двумя моментами времени, а затем токен отбрасывается ?

Прямо сейчас кажется, что он «накапливает» изменения с момента создания токена, что, я думаю, имеет смысл, но если оставить его на долгое время, запросы потенциально могут накапливать много изменений.

Я просто пропустил это: docs.microsoft.com/en-us/graph/delta-query-overview. Ваше последнее утверждение неверно, это как закладка того, где вы находитесь. Если оставить на долгое время, последующие изменения будут накапливаться, да, но всегда будет требоваться меньше запросов данных, чем если бы вам пришлось запрашивать с самого начала снова (если только изменений больше, чем фактических данных).

Nick.McDermaid 28.05.2019 04:51

@Nick.McDermaid Ваше описание закладки гораздо лучше описывает то, что я пытался описать словом «накопить». Если бы у вас было приложение, работающее, скажем, несколько месяцев, вы бы хотели периодически сбрасывать дельта-токен и просто получать новый, если количество изменений стало проблемой. Мне это показалось странным, потому что вам нужно разобрать дельта-ответ на наличие изменений, если вы его используете повторно.

mgallagher 28.05.2019 05:00

Делаете ли вы дельта-перезагрузку или полную перезагрузку, это относится к «оптимизации производительности». Иногда быстрее всегда просто сделать полную перезагрузку. Это почти всегда проще. Когда существует много существующих данных и вам нужно быстро их обновить, вы используете дельты. PS Я хотел сказать "правильный" в своем комментарии - просто я так привык говорить "неправильный"

Nick.McDermaid 28.05.2019 05:09
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
278
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы вызываете deltaLink, он возвращает все, что изменилось с момента выпуска этого токена deltaLink. Результаты также будут включать токен новыйdeltaLink, который вы используете для опроса системы следующий.

Другими словами, это похоже на работу систем управления исходным кодом, таких как Git. Когда вы выполняете git pull, он просматривает последний коммит в вашем локальном репозитории, а затем извлекает все изменения, которые произошли с момента этого коммита. В этом примере идентификатор коммита Git — это дельта-токен.

Например, вы можете начать синхронизацию пользователей «с этого момента», используя этот запрос:

https://graph.microsoft.com/v1.0/users/delta

Результаты будут выглядеть примерно так:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
    "@odata.deltaLink": "https://graph.microsoft.com/v1.0/users/delta?$deltatoken=4Pqov5cPSZPKjBZh-vGbekLcJ2oUTc1kzqA0XhF-lJrEmf3B2i-HyS72r9jBIqHuZUzdMopk5VyHnAI6_qh59FjavhOmaTmQW4JPL2bLKu5LpQ3m_zMSsp6M3Os03KOgaeay0zwAa08QefM1ArkZzkB_pUmZyV6MIS1eN7JHnBOgotBPFyPb-dnjAcheWE9W0HkUR87kf3jsuA4Ja4QTRnN3Hj_4eYdzoYxLWi54Aq2bHWTbDlPtl76M8Bhw8jiq37Y4R-G7G0eZNuRt43CBY0l3XliXXR5Ubi4ZUGApDAGVSPNc_VdHV4H3nbaB5qvwZZ7tAfqZB0-06-ZI-a0y2hxAPJLnI-iTB2PXdqxnaZn4f26k0khW52C57czh9KOjfE3nYV6pwEDFRFu-qj4062eMQwo2H6yoCLysv-C-XIOK3nDTaR3BPDOPGqNbnZkmB33-MXe9gcCPojAoU9ql95Z9de5QPnqezWVfBhXj_sRv3RlQQfCkGJHg3ZTVkdA475xJuHOhy2po38KlT3FmN0rzg0jOjvfPyTGrRI24C58ushGouckqHcCQllr4Dby9ECsPjVcNFEklSddjllaRMOkpUilecEdHnxsy0zH60bKkc2-6fcUvYuya8y4-7IySvbpk241ldxvoO9EQpDnUCdh3GgxKnYNuLtOiqiGdYVgGgTJa-iBQ1xVghcpsEMD9NqrByB3mSmy9rRKN3WP_C_HQBnEpV7Z3dvu-8ZxewMEhEObhhv8H_15msP4Bm6KvfuO-0EyNaMy_OXvGKpdkczSVQsdZ4jDmsAw_itqqtZmNoa3URjxjt0KAYNo9IrBXBx9yUGt6K_sY1xybfLxwBYOGOaV7zNd7XFaVXL8OM1hG2JGF0H4dM33uppuX5pWrrU0NBDcf9nbNkJf53fec-R1aX9BmEaAtv2xblxL75Kl0j8JKay2iBM7JaebqbGaZV6es9HUVFCIB6mxcNVDmR55U2Tel_D1TZ44eOwoZtvZvLPdQvQKuDYnwM1Yt9JJWXiGKigKi515UBPI52jhSnL1cY8VFnVDz4b81WgaRESSPipzC7fixQ94lvSaQ1MqJXRoWcm3LnjBMb7Z_aF4H_OFJNrGW-v8O__ZozNHUq04-v7rScKu3Cu64bISp1Z18DUeuRn9_Nc3vhXwhi2YlXxsX0mn-iKYjlGgE8MFSkcChpbtFLN3Wejublt3wlZ4yHQhySLDxFkgiA95BZLEXhdyVbfTzdW9cCUf9beltUT8qgcoLGH4lGdo2qjZqmUOZ8vfbPYCiExmOkN0qazvkGUs-VOcl37sccB2VEgqWodzy_Haq9HJJgAhFt_GeuL9VG58cPZPfKi0Q6DImdBE3p7NC36VvpgTbmz7G8N2V_BV8HC7e1lTiaLBkxXMEgcn_Uzl2gqPqc3CJxd3gTm7Z6MxgQXFZynwTXxo1CXSoSuLhMaND79EBrLOa11vd8aYmDwl5xuAXJZ7hZ0fVAuYe9JEUE2BvJYgBUijNi7ug8-_E73kcRQL5K2KbdTtUZRqFDxEnOBpC1adc1Pn633gC18z6Itzy5j6IXlutTBdlrAM-urzcxHX364VhnXwtWhLSEhB0xnBj-PejvfdzyuC3hTW6cLI-CttpgH-oMNDcrweeCB8NGOJYyxwFsYDZ9X3fwDYEhIwhUwdJOqG_10KJYVaRLUvdhgTkaEQdeRrJc2fyyDXAhJ7aIkr0PNy0ue1yn346cypSZw8BRAx6i3d4BTKgCxwnOqK8x6iMOb1Ad2IomKHoxH1_PkPIgMEz1mDcfipvG1IImuMj333wNe8tbPuPBsmQq-t-4GF4mH3sQkvt3pMdcnb4ITqLaZ5xR5Hxbyig6bENFyMR_5w_Q3LugXIIRknWB21jxWbcMOY1ggaYZno-MBFA2ueFDox8ImN4A9orD-8XpgbSqywqv5dnh4rCDoate27oMkz8NEGW6UdZUOSBrC0k91FKO2yHUa8KDA3tTKMIgDU-ynS0hOzfc_4cUICDpQJJOv2tXsWigkuVshJc-1733CXF3ptA8llB9dFPt6_-oWKAjxvHRq6_X8mX2Siz9D2kTXpfUS-AKmEpKcphNWzpIg5K8iKMy-xB_insLCYbkjFkxU5Q6-VnjS6KRolOXaRSejh2faVxFbgIFrOP6Ns5inBJZUemAPV7TTxY_RIGh3f4nMbzxU2P5doyYP7wTr_aiLDw1uJrDxjXRLPzLseS1uizlLpZMPw-QIAUARFyUzj7k4U9bzXoX_9URA5acvETVZOebdUbR3kCOOoBMmbdELX7uUkICPu_T0fsbGLAKA4wZSIIYdqCUydMQk9NofgvE28v-NB2g4-fFPuFANn0H4b0ktFrBT8wUO61ElrnwsL1tLyx6kP4s1y6OaH_ARTpb9StCkcvbO2bh4HYLj09xnxgbx_4RPUI6cag6mjCRhNTIipj3feZ0pBEVlL7NiTavSV2Ho2gGJujurYSE4cdF-Gjtraeulj0ur1buEwVQX8LbLWbO76X4cQLhE7G2Yf7GV8tjW2DX4TdG9yRciPaBntE0Imxe6IKZnSEEyqXMsZIRWLBfI3WIiVka-QD9lJlPZAdkNMb5VqQxyqruiCZ3nK-R7njc1EoVDejJEDOGyAljhF_kvcxsd_Hu0G8QHi0JtXXm8Tm9hH1O7EtEIDQAHR0tt6ihHixK2IYdfmoe3EIHJ_VmlC37RqTHf2ru2FgkoutuNLII9tYsMhWEEin-tgFwdCvUA0ONHytNY2I0EFKkx56t9JGoupL-lwpnhtnqpnVAPAgAk93D01fBz2NSNlXs_z3E8SOmXud35RNCG62i_nmzHICz_WRwKMHEbqelSst9U2h5FY.uzRUQfIEYUBmAFBUnNWTJn2yfL9toRZ2_VNuoRrA7jg",
    "value": []
}

Значение @odata.delaLink — это URI, указывающий на состояние Users на конкретный момент времени, когда URI был сгенерирован. Если ничего не изменилось и вы следуете @odata.delaLink, вы получите пустой набор данных и URI новый. Если вы затем добавите нового пользователя, вызов deltaLink вернет только этого нового пользователя.

Похоже на то, что я ожидал сделать /delta, но если я буду продолжать следовать дельта-ссылке, я всегда получу все изменения, которые произошли с момента самого первого вызова без токена.

mgallagher 29.05.2019 01:08

Каждый раз, когда вы опрашиваете конечную точку, вы получаете новый токен (deltaLink). Похоже, вы продолжаете использовать исходный токен.

Marc LaFleur 29.05.2019 15:52

Гениально - это был баг. Я обновлял свой deltaLink только после того, как следил за nextLinks ... Таким образом, отдельные страницы не обновляли ссылку, и начался цикл. Надо было догадаться! Поскольку он ведет себя так, как вы сказали, эта конечная точка потрясающая...

mgallagher 30.05.2019 02:06

Другие вопросы по теме