[英]REST numeric or string resource identifiers?
我正在做一些研究來幫助我開發REST API,這是我在任何地方都沒有深入討論的一個主題。
如果我在系統中有用戶,使用數字標識符識別用戶是否更好
/用戶/ 1
或者使用字符串標識符?
/用戶/ RSmith
我可以看到每種方法的假設潛在利弊,字符串標識符更易於人類閱讀,更不易被發現(不能增加以找到有效用戶),並且不需要在數據庫中存儲另一個數字ID(我不會想通過API公開數據庫ID)。 數字標識符沒有固有的含義,因此可以保證是不可變的,而使用字符串id,用戶可能希望重命名資源,從而更改資源URI。
這里是否有REST最佳實踐,或者最佳方法是否因系統而異? 如果是后者,是否還有與每種方法相關的額外利弊?
如您所知,嚴格來說,兩種方法之間沒有任何優勢。 是的,字符串標識可能更容易讓人記住,但除此之外,REST不會強制執行“漂亮”的URL(或ID),因為大多數時間URL都是由超鏈接后的程序訪問的。
因此,人類友好的URL應僅用於引導人類可能記住的資源。 此外,ID猜測應該不是問題,因為:
那么哪一個使用? 大多數情況下,無關緊要,因為不能直接訪問ID。 如果您必須確保人們出於某種原因記住他們的URL,請嘗試將它們用於人性化,但嘗試避免更改資源名稱並應用其他一些身份驗證方法,以便即使猜到的URL也無法訪問未經授權的位置。
唯一的好處是:/ users / RSmith是它更人性化。 從RESTfull的角度來看,它無關緊要,因為它們都是有效的資源標識符。 其他一切都取決於您的系統要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.