簡體   English   中英

REST-API設計-允許自定義ID

[英]REST-API design - allow custom IDs

我們正在設計一個API,供市場和在線商店用來為其客戶創建付款。 為了減少市場和商店執行API所需的工作,我們希望使他們能夠使用自己的用戶ID和合同ID,而不是存儲我們創建的ID。 這使他們更輕松,因為他們不必更改/擴展數據庫。 在數據庫內部,我們仍將使用我們自己的技術ID。 到目前為止,我們尚未對自定義ID(即唯一性)進行任何檢查。

我的問題是,一般來講,讓商店和市場使用自己的ID是一個好主意,還是不好的做法。 而且,如果我們的方法有意義,我們是否應該對商店和市場收到的ID(即與商店相關的用戶ID的唯一性)進行檢查?

通過POST /users/創建新用戶的有效負載示例:

{
   customUserId: "fancyshopuserid12345",
   name: "John",
   surName: "Doe"
}

現在,商店可以運行GET請求/users/fancyshopuserid12345來通過我們的API檢索新用戶。

編輯:我們現在同時使用兩種方法。 如果他想使用自己的ID,則可以像上面的示例一樣進行操作,如果他將false設置為customUserId的值, customUserId我們將內部ID設置為value。

我個人認為這是很棒的功能! 而且我在這里看不到任何問題。
我還認為您沒有驗證客戶ID,只需檢查它是否沒有注入到持久層中就足夠了。
另外,您不要違反任何REST約定-這就是為什么我認為這是個好主意...

好吧,一種很酷的(RESTful)方法是接收URI而不是自定義ID。 不幸的是,這意味着那些合作伙伴系統必須發布自己的資源才能鏈接到它們。 這也將解決唯一性問題,因為您只需檢查URI是否存在。

如果某些商店系統實際上是完全基於REST構建的,則他們可能希望實際存儲URI而不是ID,以便能夠在其自身和您的系統之間進行無縫導航。 他們只需要向您的客戶添加您的media-type即可,僅此而已。

除此之外,請確保您可以存儲第三方系統的ID。 我知道有一些交易系統可以做到這一點,可以存儲各種各樣的第三方ID,后端系統,傳輸層ID等。這至少是聞所未聞的。

暫無
暫無

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

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