我正在爲網站構建RESTful API,允許用戶創建包含小部件的小部件和標籤(想想igoogle.com/netvibes.com),我想分享我的URL設計以獲取洞察。小工具的RESTful URL設計檢查
下面是簡單的規則:
有一個可用widgetTypes的靜態列表供用戶挑選。
用戶可以創建每個widgetType的一個或多個widgetInstances。
用戶可以創建一個或多個標籤/含widgetInstances
此API需要僅用於將由JavaScript消耗JSON儀表板。我們還可以假設所有的身份驗證都將通過cookie來處理。
的API需要服務:
CRUD用戶的標籤
CRUD特定用戶widgetInstances的
檢索所有選項卡爲用戶
檢索給定選項卡的所有widgetInstances。
檢索用戶添加窗口小部件的所有可用窗口小部件類型。
設計:
選項卡控制器:
widgetAPI.com/tabs - >返回用戶可用的所有選項卡的元數據(ID,標題)。
widgetAPI.com/tabs/1 - >返回標籤ID爲1的元數據(標題)如果用POST,更新標籤ID發送1
widgetAPI.com/tabs/1/widgets>返回所有標籤ID的widgetInstances 1.
問題1:理想情況下,我想跟隨widgetAPI.com/tabs/1的設計也返回給定的標籤,但與設計,widgetAPI.com/所有widgetInstances標籤可能會返回太多的數據,因爲我必須返回所有選項卡的所有小部件。因此,我需要創建一個單獨的「widgetAPI.com/tabs/1/widgets」URL,但也必須返回標籤元數據,因爲我不想進行兩次HTTP調用以獲取元數據&小部件。請告知,因爲我不確定這裏的最佳方法。
widgetAPI.com/tabs/create - >創建一個新的標籤
widgetAPI。COM /選項卡/刪除/ 123 - >刪除tabid 123
窗口小部件控制器:
widgetAPI.com/widgets/123 - >如果通過POST發送返回爲widgetInstanceId 123更新123的數據。
widgetAPI.com/widgets/Create?typeID = 2 - >創建的typeid = 2的新widgetInstance這隻會是一個POST請求,以便TYPEID可以是交參數。
widgetAPI.com/widgets/delete/123 - >刪除widgetInstance 123
問題2所以有一個規則,我還沒有能夠滿足呢。我需要返回所有可用的widgetType,我不知道如何將這個請求放入前兩個控制器中。我目前正在傾向於單獨服務。所以像widgetAPI.com/getWidgetTypes。思考?
謝謝你們。如果您可以對整體設計進行批評,只需解決問題或提及任何我應該注意的事情,那將會很棒,因爲這是我第一次設計一款REST風格的應用程序。再次感謝。
您是否在使用常規的MVC控制器?還是WebAPI? – danludwig