Microsoft graph api 用户增量查询混淆

Microsoft graph api 用户增量查询混淆,microsoft-graph-api,Microsoft Graph Api,在v1.0 Microsoft graph API上使用从对用户/delta端点的请求中检索到的deltaLink时,从每个先前请求返回的后续请求(使用deltaLink)是否自初始请求或从上次请求返回更改 我对端点的预期场景感到困惑。令牌是一种长期存在的东西,您在应用程序中使用了一段时间以保持重用以跟踪初始同步的更改,还是一种临时方法来查看两个时间点之间的更改,然后丢弃令牌 现在,它似乎在创建令牌后“累积”更改,我想这是有道理的,但如果让请求长时间存在,则请求可能会累积大量更改。当调用delt

在v1.0 Microsoft graph API上使用从对
用户/delta
端点的请求中检索到的
deltaLink
时,从每个先前请求返回的后续请求(使用
deltaLink
)是否自初始请求或从上次请求返回更改

我对端点的预期场景感到困惑。令牌是一种长期存在的东西,您在应用程序中使用了一段时间以保持重用以跟踪初始同步的更改,还是一种临时方法来查看两个时间点之间的更改,然后丢弃令牌


现在,它似乎在创建令牌后“累积”更改,我想这是有道理的,但如果让请求长时间存在,则请求可能会累积大量更改。

当调用
deltaLink
时,它会返回自该
deltaLink
令牌发出以来已更改的所有内容。结果还将包括一个新的
deltaLink
令牌,您可以将其用于下一次系统轮询

换句话说,它类似于Git work之类的源代码控制系统。当您执行git pull时,它会查看本地存储库中的最后一次提交,然后提取自提交以来发生的所有更改。在本例中,Git的提交id是增量令牌

例如,您可以使用以下查询“从现在”开始同步用户:

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,它指向生成URI的特定时刻
用户的状态。如果没有任何更改,并且您遵循
@odata.delaLink
,您将收到一个空数据集和一个新的URI。如果随后添加新用户,则调用
deltaLink
将只返回该新用户

我只是跳过了这个:。你的最后一句话是错误的,它就像一个书签,说明你在哪里。如果长时间保留,后续的更改将累积,是的,但与您必须从头开始再次查询相比,所需的数据请求总是更少(除非更改多于实际数据)@Nick.McDermaid您对书签的描述比我试图描述的“累积”要好得多。如果一个应用程序运行了几个月,那么如果更改的数量出现问题,您可能希望定期丢弃delta令牌,并只获取一个新的delta令牌。这对我来说似乎很奇怪,因为如果要重用增量响应,就需要对其进行更改分析。无论是增量重新加载还是完全重新加载,都属于“性能优化”。有时,总是进行完全重新加载会更快。它几乎总是简单的。当存在大量现有数据且需要快速更新时,可以使用增量。PS我的意思是在我的评论中说“正确”-我只是习惯于说“不正确”听起来像我期望的那样
/delta
,但是如果我继续跟踪delta链接,我总是会在没有令牌的情况下返回自第一次调用以来发生的所有更改。每次轮询端点时,你都会得到一个新令牌(
deltaLink
). 听起来你在继续使用原来的代币。太棒了,这是一个bug。在执行
nextLink
s之后,我只更新了我的
deltaLink
。。。因此,单个页面没有更新链接,它开始循环。你应该猜到的!因为它的行为和你说的一样,这个端点太棒了。。。