0

API URI の設計に関する簡単な質問です。私たちはクライアントに属するリソースを持っています。これらのリソースは、システムに入力したクライアントが編集/表示/削除できます。リソースはすべてのクライアントで検索できますが、特定の基準が満たされた場合にのみアクセスが許可されます (クライアントにレベル 3 アクセス権があるなど)。

選択肢 1: リソースを所有するクライアントを uri に含めます。

client/:clientname/widgets 
client/:clientname/widgets/:id

選択肢 2: "client/:clientname" 全体を破棄します。URI のこの部分は、情報にアクセスするユーザーの資格情報に対して検証およびチェックする必要があるためです。

/widgets
/widgets:id

クライアントに属するウィジェット以外のリソースもあります。

どちらがより好ましい方法で、その理由は何ですか? 乾杯。

4

1 に答える 1

1

選択肢 1 が与える唯一の利点は、ウィジェットをアップロードしたユーザーがウィジェットなどを効果的に名前空間化できることです。Github と同様に、異なるユーザーが同じ名前のプロジェクトを持つ方法。Github がユーザー名を除外した場合、2 人のユーザーが同じ名前のプロジェクトを持つことはできません。ウィジェットがすべて一意である場合は、オプション 2 を使用します。ウィジェットを作成したユーザーとウィジェットから 1:1 のマッピングが行われるため、それを呼び出す人にとって追加の作業が必要になります。

異なるユーザーに同じウィジェット名を使用できる場合は、ユーザー名を含むアプローチを使用してください。ただし、URL で「クライアント」という単語を実際に使用する必要はないかもしれません。代わりに「/:clientname/widget/:widgetid」のようなパスを使用します。

これは一種の意見ベースの質問であるため、異なる回答が得られる可能性があることに注意してください。提供された情報を比較検討し、最終的には自分で決定する必要があります。

于 2013-03-04T21:39:36.350 に答える