2011-03-03 70 views
1

我是新手.Net & RESTful服務。Restful Api:每個存儲庫方法中的用戶標識?

這是我在數據庫中的對象層次結構:Users-> Folders-> Notes。

的API:GET/API/NOTE/{} noteid

將被映射到存儲庫中調用

NoteRepository :: GetNote(用戶ID,noteId)

請注意,我傳遞userId爲了安全目的確保該筆記屬於登錄用戶。

這是正確的做法嗎?意思是說,每個存儲庫調用都會有第一個參數作爲userId來檢查被訪問的對象是否屬於用戶。

有沒有更好的方法?

回答

2

由於Wikipedia REST article中描述的無狀態和可緩存約束,我還會在API中引入用戶標識。

但是,如果我檢查Google Tasks REST API,它們不包含用戶標識,對於Twitter API同樣的東西,所以它似乎是一個不包含用戶標識的趨勢。如果有人能說出一些光,我會很感激。

UPDATE:仔細想想,如果noteid在所有用戶中都是唯一的,那麼不需要包含用戶標識,所以GET/api/note/{noteid}很好。

然而,在一個restful接口中的邏輯父母將是GET/api/note /來獲取所有筆記的列表,並且在這裏我有異議,因爲列表會根據用戶的請求而有所不同,它不可緩存。

至於你的網點部分我覺得通過點網方法中的userid是完全沒問題的。

2

您不需要用戶ID,因爲

GET /api/note/{noteid} 

確實是獨一無二的。

用於添加ID將是有效的情景:

GET /api/{userId}/notes 

,然後如果你想要一個特定的信息,您可以:

GET /api/{userId}/notes/{noteId} 

我將實現在入門級的安全性。用戶是否有權對該特定資源執行方法。角色模型方法會很好。

問候。

+0

嗨Udo,我同意你的觀點,只要noteid在用戶中是唯一的,就不需要用戶ID。但是,你怎麼看我的疑問。如何公開一個註釋列表?邏輯將是GET/api/note /,但現在在用戶中不再是唯一的。如果我們現在執行GET/api/note/,則它不再是註釋請求的父級,這也是不好的。 – stivlo 2011-08-08 15:52:57

+0

@stivlo:那我最後一次編輯呢? – ssedano 2011-08-08 16:00:33

+0

是的,我認爲這對我更有意義,因爲它尊重了我讀過的關於REST的原則。但是,正如我注意到的,Google和Twitter似乎沒有這樣做。 – stivlo 2011-08-08 16:06:02

相關問題