我想開發一個帶有可重用API和REST風格的網站,其中一個應該很好。讓我們說,每個用戶都可以存儲他們喜歡的書的信息。所以我有很多用戶,他們每個人都可以有很多書。用於用戶數據的RESTful API
正如我想象,我會通過某種要求如下得到的書籍列表:
GET /book
不過。
用戶應該只列出他的書籍,而不是所有的書籍都存儲在服務器上。那麼如何正確地做到這一點?
在我閱讀了很多SO Q & A之後,似乎並沒有RESTful來利用cookie和會話id的標準認證(就像它在PHP或其他平臺上常見的那樣),因爲它保留了服務器上的狀態。 然後,第一個請求(GET/book)不會返回任何結果(用戶未登錄),並且在記錄之後,它將返回此用戶書籍的列表。
另一種解決方案我碰到,是追加憑據每一個要求,如:
GET /book?user=john&pass=1234
儘管TLS(HTTPS)的這一要求(因爲明文數據)的,它只是似乎是錯誤的。好像冗餘,帶寬浪費,每個請求驗證等
我的問題是:
如果我沒看錯的,如何做到這一點的好方法?從良好的編程角度和性能/網絡使用情況兩方面來看,都是如此?
也許REST不適合用戶擁有的數據?
編輯: OAuth和類似的解決方案似乎太複雜了(他們也增加了開銷,我想?)。
那麼這樣的url GET/users/books/{userId}'怎麼辦?如果你想做一些驗證,請不要**在URL中傳遞憑證,只需在成功登錄後創建一些哈希值並將其存儲在用戶的Cookie中即可。 – 2014-10-03 12:12:21
是的,建立一個認證路由(/ login?),然後將認證保存在一個cookie中(或者在客戶端通過它的令牌時接受一個特殊的頭部)。 – 2014-10-03 12:14:12
@GrzesiekD。以及如何防止某人不讀他的書? – Mios 2014-10-03 12:18:04