ユーザーがウィジェットとウィジェットを含むタブを作成できるようにする Web サイト用の RESTful API を構築しています (igoogle.com/netvibes.com を考えてください)。洞察のために私の URL 設計を共有したいと思います。
簡単なルールは次のとおりです。
ユーザーが選択できる widgetTypes の静的リストがあります。
ユーザーは、各 widgetType の 1 つ以上の widgetInstances を作成できます。
ユーザーは、widgetInstances を含む 1 つ以上のタブ/ダッシュボードを作成できます
この API は、JavaScript によって消費される JSON のみを提供する必要があります。また、すべての認証が Cookie によって処理されると想定することもできます。
API は以下を提供する必要があります。
ユーザーのタブの CRUD
特定のユーザー widgetInstances の CRUD
ユーザーのすべてのタブの取得
特定のタブのすべての widgetInstances の取得。
ユーザーがウィジェットを追加するために使用できるすべての widgetTypes の取得。
デザイン:
タブ コントローラ:
widgetAPI.com/tabs -> ユーザーが使用できるすべてのタブのメタ データ (ID、タイトル) を返します。
widgetAPI.com/tabs/1 -> タブ ID 1 のメタデータ (タイトル) を返します。POST で送信された場合、タブ ID 1 を更新します。
widgetAPI.com/tabs/1/widgets > タブ ID 1 のすべての widgetInstances を返します。
質問 1:理想的には、指定されたタブのすべての widgetInstances も返す widgetAPI.com/tabs/1 の設計に従いたいと思いますが、その設計では、widgetAPI.com/tabs が返さなければならないほど多くのデータが返される可能性があります。すべてのタブのすべてのウィジェットを返します。したがって、別の「widgetAPI.com/tabs/1/widgets」URL を作成する必要がありますが、メタデータとウィジェットを取得するために 2 つの HTTP 呼び出しを行いたくないため、タブのメタデータも返す必要があります。ここで最善のアプローチがわからないので、アドバイスしてください。
widgetAPI.com/tabs/create -> 新しいタブを作成
widgetAPI.com/tabs/delete/123 -> tabid 123 を削除
ウィジェット コントローラー:
widgetAPI.com/widgets/123 -> widgetInstanceId 123 のデータを返します。POST 経由で送信された場合は 123 を更新します。
widgetAPI.com/widgets/Create?typeID = 2 -> typeid = 2 の新しい widgetInstance を作成します。これは POST リクエストのみになるため、typeId は post パラメータである可能性があります。
widgetAPI.com/widgets/delete/123 -> widgetInstance 123 を削除
質問 2では、まだ満たすことができていないルールが 1 つあります。利用可能なすべての widgetTypes を返す必要がありますが、この要求を前の 2 つのコントローラーに適合させる方法がわかりません。私は現在、これを個別に提供することに傾いています。widgetAPI.com/getWidgetTypes のようなものです。考え?
みんなありがとう。RESTful アプリを設計するのはこれが初めてなので、全体的な設計について批評したり、質問に答えたり、気を付けるべきことを述べたりしていただければ幸いです。再度、感謝します。