处理Microsoft Graph中的不存在的属性

时间:2017-07-26 06:55:11

标签: microsoft-graph

这来自类别"意外行为" - 进行以下查询(您可以将其粘贴到Graph Explorer中):

https://graph.microsoft.com/v1.0/users?$filter=idc eq 'test'

这将返回状态代码400和"属性' idc'不存在作为声明的属性或扩展属性。"这是一个明智且易于理解的回应。

现在,如果尝试$选择此属性:

https://graph.microsoft.com/v1.0/users?$select=idc

我得到了一个我完全不期望的结果:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(idc)",
    "@odata.nextLink": "https://graph.microsoft.com/v1.0/users?$select=idc&$skiptoken=cut",
    "value": [
        {},
        {},
...
        {}
    ]
}

(空对象列表;要求具有该无效属性名称的单个用户返回一个emtpy响应)。

所以我的问题是 - 为什么$ filter错误输出而$ select没有?有没有办法强迫$ select也出错? (例如,我使用/ beta端点并更改属性名称 - 我希望我的代码无法找到)

1 个答案:

答案 0 :(得分:0)

对不起,迟到了。我们对此进行了讨论,并希望得到您的一些想法(以及其他开发人员的想法)。我们对此还没有明确的答案。

这里有两种思想流派:

  1. 在处理不存在的属性时,使$ select和$ filter行为一致。
  2. 这些行为不同是可以的,因为指定$ select时调用者的意图可能与$ filter的意图不同。该服务不能忽略$ filter中指定的属性,因为它完全更改了返回的对象集。但是,$ select不会更改对象集,只会删除不可用的属性。因此$ select和$ filter不需要保持一致。
  3. 思想?

    希望这有帮助,