2012-06-26 36 views
1

我設計一個REST API,並已經過這個問題,運行:REST API可能的值集合:字符串還是整數?

應如何設定值來定義?

說我有一個要在http://myserver.com/api/getPicture/1

要請求,這樣服務器響應一個圖片對象:

{ 
url : "http://myserver.com/pictures/1.jpg", 
taken_at : "1/1/2012" 
} 

現在,說我想添加一個color_depth場。

兩種可能的選擇要做到這一點是:

color_depth : "BLACK_WHITE" or "COLOR" or "GRAYSCALE" 
color_depth : "0" OR "1" OR "2" //would need to map these to their meaning somewhere 

是否有在這種情況下做什麼標準?

回答

3

對於JSON,沒有任何事實上的或官方的標準。 JSON-SCHEMA試圖解決這個問題,但規格不推薦,甚至實現不流行。

使用XML,XML Schema是標準解決方案。對於RDF,也有解決這個問題的RDFS。

對於每種格式,coice都是你的。取決於整數標識符(1,2,3)並且在沒有模式的情況下翻譯它們意味着您的請求比表達「COLOR」意思的字符串要獨立得多。這是RESTful API設計的核心概念,即請求應該是獨立的。這與Roy Fielding論文中描述的RESTful體系結構的visibility property鬆散地相關。

我會去完整的字符串。

+0

同意。整數代碼是1)節省打字時間,2)保存線或磁盤上的字節,以及3)保存用戶記住值是「BLACK_WHITE」還是「BLACK-WHITE」或「B&W」的痛苦「或者你有什麼。如果服務器向客戶端提供表單控件中的可用選項,或者通過其他方式,則整數代碼的用例會迅速消失。 – fumanchu

+0

謝謝,我結束了使用完整的字符串。內存/速度的任何好處只適用於大量的數據,現在我只需看看回復並知道他們在說什麼,而不必記住整數代碼。 – you786

+1

P.S.在數據庫中存儲類似這些「枚舉」的類似辯論,這是我在發佈這個問題時錯過的東西。 – you786

相關問題