При использовании deltaLink
, полученного из запроса к конечной точке users/delta
в API Microsoft graph версии 1.0, возвращают ли последующие запросы (с использованием deltaLink
), возвращаемые из каждого предыдущего запроса, изменения с момента запроса исходный или с последнего запроса?
Я не понимаю, каков предполагаемый сценарий для конечной точки. Является ли токен долгоживущей вещью, которую вы используете в своем приложении какое-то время, чтобы продолжать повторно использовать для отслеживания изменений после некоторой начальной синхронизации, или это временный метод для просмотра изменений между двумя моментами времени, а затем токен отбрасывается ?
Прямо сейчас кажется, что он «накапливает» изменения с момента создания токена, что, я думаю, имеет смысл, но если оставить его на долгое время, запросы потенциально могут накапливать много изменений.
@Nick.McDermaid Ваше описание закладки гораздо лучше описывает то, что я пытался описать словом «накопить». Если бы у вас было приложение, работающее, скажем, несколько месяцев, вы бы хотели периодически сбрасывать дельта-токен и просто получать новый, если количество изменений стало проблемой. Мне это показалось странным, потому что вам нужно разобрать дельта-ответ на наличие изменений, если вы его используете повторно.
Делаете ли вы дельта-перезагрузку или полную перезагрузку, это относится к «оптимизации производительности». Иногда быстрее всегда просто сделать полную перезагрузку. Это почти всегда проще. Когда существует много существующих данных и вам нужно быстро их обновить, вы используете дельты. PS Я хотел сказать "правильный" в своем комментарии - просто я так привык говорить "неправильный"
Когда вы вызываете 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
, но если я буду продолжать следовать дельта-ссылке, я всегда получу все изменения, которые произошли с момента самого первого вызова без токена.
Каждый раз, когда вы опрашиваете конечную точку, вы получаете новый токен (deltaLink
). Похоже, вы продолжаете использовать исходный токен.
Гениально - это был баг. Я обновлял свой deltaLink
только после того, как следил за nextLink
s ... Таким образом, отдельные страницы не обновляли ссылку, и начался цикл. Надо было догадаться! Поскольку он ведет себя так, как вы сказали, эта конечная точка потрясающая...
Я просто пропустил это: docs.microsoft.com/en-us/graph/delta-query-overview. Ваше последнее утверждение неверно, это как закладка того, где вы находитесь. Если оставить на долгое время, последующие изменения будут накапливаться, да, но всегда будет требоваться меньше запросов данных, чем если бы вам пришлось запрашивать с самого начала снова (если только изменений больше, чем фактических данных).