2015-02-24 44 views
1


我找不到明確的文檔提及UI渲染提示是否可作爲REST元數據發回。首先,什麼都可以歸類爲REST元數據?當然,屬性的數據類型可以是元數據,但可以表示屬性是單值還是多值也可以描述元數據?怎麼樣「ishidden」和「isReadOnly」?根據我的理解,像min/max/regexp/fixed value這樣的信息是可以作爲元數據的,但不知道是否與像我上面提到的提示相關的任何內容適合REST元數據?任何指針都會有最大的幫助。REST網址是否可以將UI呈現提示作爲元數據發回?

謝謝
水稻

+0

您可以發送甚至HTML片段或JavaScript代碼(按需HTTP又名代碼:// WWW .ics.uci.edu /〜fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_7)如果你願意,所以發送這個UI元數據不是我想的問題。順便說一下,Thierry templier是正確的,你應該只將UI meta發送給需要它的客戶端。 – inf3rno 2015-02-24 12:11:48

回答

1

Honnestly你是免費送還給你的有效載荷想要的REST客戶端。不過,我不確定總是使用這些面向UI的元數據是個好主意。事實上,您也可以擁有在不存在UI問題的情況下使用數據的應用程序。

您可以實現一種機制,使您可以選擇要在內容關聯(Conneg基於標頭Accept)內返回到REST客戶端的元數據級別,其方式與OData類似。這裏是下面的示例:

GET serviceRoot/People 
Accept: application/json;odata.metadata=minimal 

您可以設想下面的值用於報頭Accept

  • 沒有元數據:應用/ JSON;元數據=無
  • 結構的元數據(屬性類型,...):application/json; metadata = minimal
  • 驗證元數據(有用以確定屬性的預期值):應用/ JSON;元數據=驗證
  • UI呈現元數據(只讀,...):應用/ JSON;元數據=渲染

你可以下面所描述的那麼結構中的內容:

{ 
    "property1": "value", 
    // Structural 
    "[email protected]": { 
     "type": "string" 
    }, 
    "property2": 10, 
    // Structural + validation 
    "[email protected]": { 
     "type": "integer" 
     "minValue": 2, 
     "maxValue": 15 
    }, 
    "property3": 10, 
    // Structural + ui rendering 
    "[email protected]": { 
     "type": "integer" 
     "minValue": 2, 
     "maxValue": 15, 
     "readOnly": true, 
     "hidden": false 
    } 
} 

如果你想看看在元數據是如何的OData v4的內部處理,您可以使用從odata.org以下鏈接:

編輯:在評論,inf3rno強調頭Prefer也可以用來描述所需的元級。

下面是使用下面的示例:

GET serviceRoot/People 
Accept: application/json 
Prefer: metadata=rendering 

希望它可以幫助你, 蒂埃裏

+0

也許他可以使用偏好的頭文件http://tools.ietf.org/html/rfc7240來描述所需的元級別。 – inf3rno 2015-02-24 12:09:14

+0

是的,你是對的!喜歡頭可能是一個很好的選擇。我會在我的回覆中添加這個。非常感謝! – 2015-02-24 12:47:01

相關問題