簡體   English   中英

REST數字或字符串資源標識符?

[英]REST numeric or string resource identifiers?

我正在做一些研究來幫助我開發REST API,這是我在任何地方都沒有深入討論的一個主題。

如果我在系統中有用戶,使用數字標識符識別用戶是否更好

/用戶/ 1

或者使用字符串標識符?

/用戶/ RSmith

我可以看到每種方法的假設潛在利弊,字符串標識符更易於人類閱讀,更不易被發現(不能增加以找到有效用戶),並且不需要在數據庫中存儲另一個數字ID(我不會想通過API公開數據庫ID)。 數字標識符沒有固有的含義,因此可以保證是不可變的,而使用字符串id,用戶可能希望重命名資源,從而更改資源URI。

這里是否有REST最佳實踐,或者最佳方法是否因系統而異? 如果是后者,是否還有與每種方法相關的額外利弊?

如您所知,嚴格來說,兩種方法之間沒有任何優勢。 是的,字符串標識可能更容易讓人記住,但除此之外,REST不會強制執行“漂亮”的URL(或ID),因為大多數時間URL都是由超鏈接后的程序訪問的。

因此,人類友好的URL應僅用於引導人類可能記住的資源。 此外,ID猜測應該不是問題,因為:

  1. 您必須根據任何身份驗證方法限制對URL的訪問,或者:
  2. 您必須使用非“公開”的隨機/不可授權的URL。

那么哪一個使用? 大多數情況下,無關緊要,因為不能直接訪問ID。 如果您必須確保人們出於某種原因記住他們的URL,請嘗試將它們用於人性化,但嘗試避免更改資源名稱並應用其他一些身份驗證方法,以便即使猜到的URL也無法訪問未經授權的位置。

唯一的好處是:/ users / RSmith是它更人性化。 從RESTfull的角度來看,它無關緊要,因為它們都是有效的資源標識符。 其他一切都取決於您的系統要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM