Outlook API - 在使用带有OrderBy的过滤器时获取错误BadRequest

时间:2017-07-24 13:54:57

标签: outlook-api

我正在构建一个测试应用程序来获取邮件和附件。

如果我使用的请求包含IsRead=falseHasAttachments=true的过滤器,则可以使用

https://outlook.office365.com/api/v1.0/me/messages/?$select=Sender,Subject&$filter=IsRead%20eq%20false%20AND%20HasAttachments%20eq%20true&$top=50

如果我使用了该请求,我添加了OrderBy并删除了第二个过滤器HasAttachements就可以

https://outlook.office365.com/api/v1.0/me/messages/?$select=Sender,Subject&$filter=IsRead%20eq%20false&$orderby=Subject%20desc&$top=50

如果我使用请求同时包含过滤器和orderBy

https://outlook.office365.com/api/v1.0/me/messages/?$select=Sender,Subject&$filter=IsRead%20eq%20false%20AND%20HasAttachments%20eq%20true&$orderby=Subject%20desc&$top=50

打破,出现以下错误 request.Result = {StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1

任何人都可以从我提出的要求中看出我做错了吗?

提前致谢

通过测试不同的方案,问题似乎与过滤器HasAttachments

有关

只有HasAttachments过滤 orderBy 中断 https://outlook.office365.com/api/v1.0/me/messages/?$select=Sender,Subject&$filter=HasAttachments%20eq%20true&$orderby=Subject%20desc&$top=50

只有HasAttachments过滤器没有 orderBy 工作 https://outlook.office365.com/api/v1.0/me/messages/?$select=Sender,Subject&$filter=HasAttachments%20eq%20true&$top=50 有效

使用带有orderBy(非HasAttachments的2个过滤器 https://outlook.office365.com/api/v1.0/me/messages/?$select=Sender,Subject&$filter=IsRead%20eq%20false%20AND%20Subject%20eq%20%27Test%27&$orderby=Subject%20desc&$top=50

1 个答案:

答案 0 :(得分:0)

通过在浏览器中运行请求,我得到了更详细的错误

{"error":{"code":"InefficientFilter","message":"The restriction or sort order is too complex for this operation."}}

因此,似乎不允许使用某些过滤器和排序组合。

我必须解决我的问题的方法是在我的select子句中包含HasAttachments,然后过滤返回的结果。