2014-09-22 82 views
1

我們構建的多租戶應用程序將用戶記錄存儲在公共「用戶」表中。每個用戶記錄都有一個tenantID來保持數據隔離。在SaaS多租戶RESTful應用程序中暴露ID

我們將API暴露給客戶端,並且API對個別用戶進行了操作。

GET /api/users/{id} 

公開我們的TABLE ID並不正確,它們是表格中所有「用戶」的自動生成PRIMARY鍵。有沒有更好的做法,比如爲每個用戶生成一個唯一的哈希值,並使得我們爲客戶端公開的「ID」?或者我們應該爲表執行不同類型的主鍵,如不顯示增量計數的散列或複合主鍵?或者我們應該爲每個客戶的用戶創建一個遞增的整數「ID」?謝謝!

回答

1

有一些理由不使用數據庫自​​動生成的ID作爲資源標識符:

  • 他們是不是用戶友好:GET/API /用戶/ 5463287 VS/API /用戶/鮑勃
  • 他們可以跨數據庫更新/恢復更改
  • 他們是沒有意義的:任意IDS不包含任何語義

在這種情況下的資源標識符應該是唯一的字母數字與SEMA ntics(當這是有道理的)