2017-07-26 32 views
1

這是從類「異常行爲」 - 採取以下查詢(你可以將其粘貼在圖形瀏覽器):處理在Microsoft Graph中不存在的屬性的

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響應)。

所以我的問題是 - 爲什麼$過濾錯誤和$選擇不?有沒有辦法強制$ select也出錯? (例如,我使用的是/測試端點和屬性名稱的變化 - 我希望我的代碼失敗,找出)

回答

0

對不起,我遲到的答案。我們就此進行了討論,並希望得到您的一些想法(以及其他開發人員的想法)。我們現在還沒有明確的答案。

這裏有思想的2所學校:

  1. 將$選擇與不存在的性能問題時$過濾器行爲一致。
  2. 這些行爲可以不同,因爲調用者在指定$ select時的意圖可能不同於$ filter。該服務無法忽略$ filter中指定的屬性,因爲它完全更改了返回的對象集合。但是,$ select不會更改對象集合,但只會刪除不可用的屬性。因此$ select和$ filter不需要一致。

的思考?

希望這有助於

+0

我的偏向#1 - 這樣可以節省我的時間搞清楚我做錯了什麼的時候,我本來期望不返回某些屬性。但是,如果決定進入第二個層面:至少以某種方式喚起行爲差異,沒有人會驚訝。 –

+0

我也會說#1,即使這兩種情況都符合你描述的方式,我認爲類似的行爲(在非現有屬性上拋出錯誤)消除了所有的混淆,甚至可能使一些人免於錯別字:) –

相關問題