2012-02-10 16 views
1

リソースに表示されるデータの制限をモデル化するにはどうすればよいですか?異なる人が同じリソースにアクセスしていますが、役割が異なるため、すべての情報を表示することはできません。リソースに表示されるデータの制限をモデル化するにはどうすればよいですか?

場合、私が働いている:情報にアクセス制限なし
ソリューション:たとえば、しかし

GET /User -> [{name:"John", phoneNumber: "322-333"}] 
GET /User/{id} -> {name:"John", phoneNumber: "322-333"} 

:誰もがそれにアクセスすることができれば

User: 
    name 
    phoneNumber 

をこれは、モデルのは簡単だろう私は2つの役割、管理者とユーザーを持っています。 phoneNumberは、管理者でもあるユーザーだけが見ることができます。認可トークンは、クッキー、ヘッダーなどで送信されます。サーバーは、リクエスターが持つ役割を知ります。どのようにこれを処理するためのAPIを設計するでしょうか?

1)素朴な解決策はそれをフィルタリングして、あなたはすなわち、それへのアクセスを許可アレント場合は未設定フィールドを残して次のようになります。私は、アイデアのカップルを持っています。

If user: GET /User -> [{name:"John"}] 
If admin: GET /User -> [{name:"John", phoneNumber: "322-333"}] 

2)は、URLの役割埋め込む:

If user is wanted as a User: GET /User/User -> [{name:"John"}] 
If user is wanted as an Admin: GET /Admin/User -> [{name:"John", phoneNumber: "322-333"}] 

3)の各フィールドの可能なサブセットのための新しいリソースを定義します。

If user is wanted as a User: GET /PublicUserInfo -> [{name:"John"}] 
If user is wanted as an Admin: GET /FullUserInfo -> [{name:"John", phoneNumber: "322-333"}] 

異なるアプローチが良いでしょうか?
誰かが実際に解決した解決策を経験していますか?認証されたユーザーに基づいて

答えて

0

使用オプション1。 APIを実装している2つまたは3つのクライアントを選択する場合は、APIエンドポイントの2倍と使用する必要があります。

関連する問題