2017-05-27 21 views
1

我很好奇建立一個適當的寧靜資源時,根據用戶的角色採取什麼樣的資源返回資源是最好的。其餘API返回基於角色或不同實體的屬性

例如, 如果用戶1個呼叫,GET:API /用戶/ 1 該用戶應該會得到像SSN專有信息以及基本的用戶對象(姓,名,電子郵件)。 但是,如果用戶2調用GET:api/Users/1 該用戶應該獲得基本用戶對象以及他們共享的共享朋友。

這是在一個寧靜的資源中提倡的東西,還是更容易將這些問題分離爲更具體的東西,比如api/Users/1/sensitive和api/Users/1/Friends?

如果前者可以接受,這是否可以通過繼承來管理?

謝謝!

+0

您可以使用通過API調用進行身份驗證來決定共享哪些信息以及與誰共享。 HTTP基本身份驗證! https://stackoverflow.com/questions/7999295/rest-api-authentication – Riya

+0

@Riya每個人都可以與我的API進行通信進行身份驗證。然後我可以檢查調用API的調用者是否是被請求的用戶。那麼最好是返回一個完全不同的對象,如果他們是或不是用戶,或者只是隱藏特定的屬性? –

+0

返回具有較少/不同屬性的相同對象,如果這可以解答您的問題。 – Riya

回答

0

希望你提出這個問題後,你已經取得了進展。

我會重組在this SO answer的發言: 這是完全REST的範圍下返回基於約束,如在同一資源的不同表示: 接受頭:(例如,不同的格式如應用/ JSON或應用/ xml) 授權:即根據調用者「授權」查看。

REST的唯一授權是資源的URI必須相同。因此,可以考慮: /API /用戶/ 1爲URI的ID爲1的用戶資源:每REST完美的罰款

鑑於:

/API /用戶/ 1 /私人

/api/User/1/public

不是RESTful,因爲它爲同一資源提供了兩個URI。