2

私は一連のRESTサービスを作成しており、一部のリソースでは、次の状況に対処しています。例えば:

リソース付き:

/ articles

ユーザーは記事を作成できますが、ユーザーは記事を削除できません。ユーザーは自分が作成したすべての記事のリスト(GET / articles)を取得できますが、他のユーザーの記事を表示することはできません。記事を表示または削除するための十分な権限を持つ「管理者」ユーザーの特別なセットがあります。

これには2つのアプローチがあります。

  • 例のようにエンドポイントが1つだけで、POST、GET、およびDELETEのサービスのコード内のアクセス許可を処理します

  • 異なるエンドポイント/admin/ articlesを持ち、実装を分離し、認証直後とサービスコードの前にアクセス許可を処理します。

どちらが良い/きれい/RESTfullishだと思いますか?

4

2 に答える 2

1

2人のユーザーが同じ識別子で記事を作成できる場合、それは「よりクリーン」であり、ファイルシステムのようにより深いレベルでそれらを表現するのがより簡単です。

/{ユーザー名}/articles

それらがすべて同じユーザースペースで記事を作成している場合は、リソースごとの承認がより適切です。

于 2013-03-27T11:06:13.313 に答える
0

私は最初のアプローチに行きます-次の理由で同じエンドポイントを持っています:

  1. よりクリーンで理解しやすい。
  2. より簡単なメンテナンス-将来、より多くの役割を持つと仮定します。これにより、追加する役割ごとにさらに多くのエンドポイントを作成する必要があります。
  3. 緩い結合。このアプローチを使用することで、アプリケーションの承認に関する懸念をAPI自体から切り離すことができます。
  4. とにかくコード自体で承認をチェックして、クライアントが無許可のリソースを呼び出していることを確認する必要があるため、2番目のアプローチを使用しても実際には何も保存されません。
于 2013-03-27T12:41:46.977 に答える