为什么$ skip参数高得离谱?

时间:2019-05-29 16:29:44

标签: microsoft-graph microsoft-graph-mail

我正在使用Microsoft Graph API v1.0从Outlook收件箱中获取邮件。我专门尝试获取成千上万的电子邮件,因此我必须使用分页,并且为此我遵循了他们的docs。这一直很好,但是当我调试一个单独的问题时,我遇到了一些奇怪的事情-返回的跳过令牌正常运行,直到通过后续请求一段时间后,即使我的$ top设置为仅50,它也跳了大约1000。这是一个问题,因为我收到的电子邮件实际上少于收件箱中的电子邮件。

我开始返回图表调用的$ count以及所有其他数据,现在我可以确认,由于这种巨大的跳过,我期望收到的电子邮件比最终实际发送的要多。我已经尝试过将页面大小更改为更大或更小,但是总是会出现类似的大量跳转。

这是我得到的输出(当我输出开头收到的@ odata.nextLink和@ odata.count时):

3983

https://graph.microsoft.com/v1.0/me/messages?$filter=sentDateTime gt 2019-05-15 and sentDateTime lt 2019-05-29&$top=50&$count=true&$select=id,sender,subject,body

https://graph.microsoft.com/v1.0/me/messages?$filter=sentDateTime+gt+2019-05-15+and+sentDateTime+lt+2019-05-29&$top=50&$count=true&$select=id%2csender%2csubject%2cbody&$skip=50

https://graph.microsoft.com/v1.0/me/messages?$filter=sentDateTime+gt+2019-05-15+and+sentDateTime+lt+2019-05-29&$top=50&$count=true&$select=id%2csender%2csubject%2cbody&$skip=100

https://graph.microsoft.com/v1.0/me/messages?$filter=sentDateTime+gt+2019-05-15+and+sentDateTime+lt+2019-05-29&$top=50&$count=true&$select=id%2csender%2csubject%2cbody&$skip=150

...

https://graph.microsoft.com/v1.0/me/messages?$filter=sentDateTime+gt+2019-05-15+and+sentDateTime+lt+2019-05-29&$top=50&$count=true&$select=id%2csender%2csubject%2cbody&$skip=500

https://graph.microsoft.com/v1.0/me/messages?$filter=sentDateTime+gt+2019-05-15+and+sentDateTime+lt+2019-05-29&$top=50&$count=true&$select=id%2csender%2csubject%2cbody&$skip=550

https://graph.microsoft.com/v1.0/me/messages?$filter=sentDateTime+gt+2019-05-15+and+sentDateTime+lt+2019-05-29&$top=50&$count=true&$select=id%2csender%2csubject%2cbody&$skip=600

https://graph.microsoft.com/v1.0/me/messages?$filter=sentDateTime+gt+2019-05-15+and+sentDateTime+lt+2019-05-29&$top=50&$count=true&$select=id%2csender%2csubject%2cbody&$skip=1598

https://graph.microsoft.com/v1.0/me/messages?$filter=sentDateTime+gt+2019-05-15+and+sentDateTime+lt+2019-05-29&$top=50&$count=true&$select=id%2csender%2csubject%2cbody&$skip=1648

https://graph.microsoft.com/v1.0/me/messages?$filter=sentDateTime+gt+2019-05-15+and+sentDateTime+lt+2019-05-29&$top=50&$count=true&$select=id%2csender%2csubject%2cbody&$skip=1699

https://graph.microsoft.com/v1.0/me/messages?$filter=sentDateTime+gt+2019-05-15+and+sentDateTime+lt+2019-05-29&$top=50&$count=true&$select=id%2csender%2csubject%2cbody&$skip=1750

https://graph.microsoft.com/v1.0/me/messages?$filter=sentDateTime+gt+2019-05-15+and+sentDateTime+lt+2019-05-29&$top=50&$count=true&$select=id%2csender%2csubject%2cbody&$skip=1800
...

您可以在跳过600处看到它开始有点疯狂,我不确定为什么会这样。我也不知道在哪里报告这个错误,我只在github here

上找到了一个报告Microsoft Graph文档问题的地方。

编辑1:经过更多测试之后,我可以看到更改查询的日期范围将导致$ skip似乎出错的位置发生变化。但是,对于每个日期范围查询,每次都会在相同的位置进行混乱。

编辑2:实际上,有一些日期范围根本没有这个问题,我最终收到的电子邮件最终等于$ count。为什么会被某些日期范围或遇到的电子邮件绊倒呢?

编辑3:我认为实际上只是一个特定的日期而已。在调用api表单代码时,我获得了巨大的$ skip飞跃,但是在图形资源管理器中,此刻,当我达到$ skip = 600且具有$ top = 50时,即使返回了@ odata.count,nextLink实际上也停止出现大于1500。这可能是返回的计数或图形浏览器上的nextLink的问题

0 个答案:

没有答案