2016-11-29 53 views
1

假設我有一些API設置爲微服務。一個API是管理用戶(用戶API),看起來像:多個API的類似端點

/users     GET, POST 
    /{id}    GET, PUT, DELETE 

再有就是用於管理安全信息(訪問角色,權限等)另一個API和user在用戶創建API可以分配在安全API中定義的group。是否應該在安全微服務或用戶微服務中進行關聯?

我最初的想法是在安全微服務中,因爲那是所有應用程序都會從​​中請求安全信息的地方。就這樣,和一個user只能分配給一個group,我再拿出的終點:

/users/{id}/group  GET, POST, DELETE 

但該端點感覺就像它屬於更在用戶微服。其他端點是一種選擇是:

/groups/{id}/users  GET, POST, DELETE 
       /{id} GET, DELETE 

但是,這則使得它看起來是一個user可能被分配到多個組。但是,我可以設計它,以便當usergroup相關聯時,它將它與之前與之關聯的group解除關聯。

什麼是最佳選擇,還是有更好的方法來處理這些類型的API調用,我不知道?

回答

0

我想沒有必要的「正確」方式。這是我將如何接近它。

基於:

然而,這樣當用戶關聯到 組,它由一組,這是以前與相關 的關聯它,我可以設計它。

/groups/{id}/users  GET, POST, DELETE 
       /{id} GET, DELETE 

此端點將導致該Id一些問題會發生變化,因此,你必須改變你的用戶切換到不同的組後調用的URL。所以連續的呼叫需要轉到新的端點。

例如:/groups/1/users/1可能是有效的一次,但當用戶移動組/groups/1/users/1將不再返回結果。現在將成爲/groups/2/users/1

而用:

/users/{id}/group  GET, POST, DELETE 

如果用戶切換組端點不會改變,保持它在我看來,更清潔,更清晰。用戶仍然是相同的,很明顯,該組與該用戶相關聯的,但它並不重要group被稱爲它總是與id

我想返回相關的groupuser底線是,端點應該反映你想達到什麼樣的,如果你所得到的組用戶:

/users/{id}/group  GET, POST, DELETE 

,或者如果你得到所有用戶的一組:

/groups/{id}/users  GET, POST, DELETE