複数の権限を持つ複数の権限を持つユーザーがいるとします。
指定されたユーザーのすべての承認を(権限なしで)取得するには、次のようにします。
GET users/{id}/authorizations
「通常の」ケースは、パフォーマンス上の理由から、権限に権限を埋め込まないことです。
そのユーザーのそれぞれの権限で承認を返す必要がある場合があります。
推奨される解決策は次のとおりです。
GET users/{id}/authorizations/permissions // does not seem clear
GET users/{id}/authorizations?permissions=true // with query string
GET users/{id}/authorizationswithpermissions // new resource
その場合、REST URIを設計するための最良の方法は何ですか?
そのユーザーのそれぞれの権限で承認を返す必要がある場合があります。
GET users/{id}/authorizations/permissions
このようにコレクションリソースをネストすることはお勧めできません。「ユーザーのすべての権限のすべての権限を私に与える」という意味id
ですか?これは不明です。これをしないでください。
GET users/{id}/authorizations?permissions=true
クエリは通常、コレクションリソースのクエリ、検索、またはフィルタリングに使用されます。このURLはid
、がであるユーザーのすべての承認を返します。しかし、その男は何ですか?これは不明です。これをしないでください。permissions
true
GET users/{id}/authorizationswithpermissions
承認は承認です。それらの表現はURIに依存するべきではありません。これをしないでください。
問題の解決策は、コンテンツネゴシエーションを使用することです。使用するURLは1つだけです。
GET users/{id}/authorizations
つまり、ユーザーのすべての認証のリストを教えてくださいid
。
これで、権限なしでこのリストを取得したい場合は、HTTPヘッダーを使用できます
Accepts: application/vnd.mycompany.authorizations+xml
これを消化しましょう。
application
:通常のMIMEタイプの最初の部分 application/xml
vnd
:独自のタイプを定義するためのプレフィックスmycompany.authorizations
:あなたのタイプxml
:の2番目の部分 application/xml
このリストに権限を付与したい場合は、HTTPヘッダーを使用できます。
Accepts: application/vnd.mycompany.authorizations.permissions+xml
現在はを使用していることに注意してくださいvnd.mycompany.authorizations.permissions
。サーバーは、権限を含む権限を返す必要があります。リソースではなく、表現のみが異なります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加