2013-10-09 15 views
0

我遇到了一個我認爲不遵循REST約定的問題。請考慮這一點,我有一個允許通過此REST APIREST獲取列表方法的容器類

http://localhost:8080/api/books 

在我的腦海裏,與書記錄工作的API,當我做一個GET來檢索列表,這是我所期望的:

[{"name":"some book name", 
     "price":"5" 
    }, 
    {"name":"second book", 
     "price":"100" 
    } 
    ] 

上面的JSON可以讓我輕鬆地用Gson反序列化對象列表/數組。

但是,由於某種原因,該API的實現,使其返回:

{"books": [{"name":"some book name", 
       "price":"5" 
       }, 
       {"name":"second book", 
       "price":"100" 
       } 
       ] 
    } 

正如你看到的,我現在需要使用一個名爲「書籍」的容器類反序列化到,然後我從書籍的一種方法中獲取書籍數組。我認爲使用不提供更多價值的容器類(它只是一個列表容器)是一個壞主意,但我不是專家/經驗豐富的管理大型系統REST API的所有人。因此,如果你們中的任何人都可以告訴我這是否完全正常,或者這是一個麻煩的跡象(如果可能的話,解釋),這是非常感謝。

回答

0

在我的經驗中看到這是非常正常的事情。這是否是最佳做法是一個意見問題。您是否期望資源能夠返回一系列圖書項目或單個圖書項目?無論哪種方式,使用GSON/Jackson /無論是否可以輕鬆地進行反序列化。有時候是因爲列表容器中有其他元數據,比如它返回部分結果時的總數。

+0

我想我的問題是我沒有使用書籍類以外的使用它,以便我可以得到書的列表。因此,我不明白爲什麼我們需要它,只要我們可以簡單地做就行了。 –

+0

至於期待從資源,預計列表(這是約定,不是?)。如果它是一本書,不要使用.../books/{id}?也許我不瞭解你的意見。 –

+0

我認爲你是理解。我只是問你期望看到什麼。我在野外看到了兩種方式。你的論點是合理的,但我認爲其他人可能會不同意。 – tom