我正在为一个网站构建一个 RESTful API,它允许用户创建小部件和包含小部件的选项卡(想想 igoogle.com/netvibes.com),我想分享我的 URL 设计以供您参考。
以下是简单的规则:
有一个静态的 widgetTypes 列表供用户选择。
用户可以为每个 widgetType 创建一个或多个 widgetInstances。
用户可以创建一个或多个包含 widgetInstances 的选项卡/仪表板
此 API 只需提供将由 JavaScript 使用的 JSON。我们还可以假设所有身份验证都将通过 cookie 进行处理。
API 需要服务:
用户标签的 CRUD
特定用户小部件实例的 CRUD
检索用户的所有选项卡
检索给定选项卡的所有小部件实例。
检索所有可用的 widgetTypes 供用户从中添加小部件。
设计:
选项卡控制器:
widgetAPI.com/tabs -> 返回用户可用的所有选项卡的元数据(id、标题)。
widgetAPI.com/tabs/1 -> 返回标签 ID 1 的元数据(标题)。如果使用 POST 发送,则更新标签 ID 1。
widgetAPI.com/tabs/1/widgets > 返回标签 ID 为 1 的所有 widgetInstances。
问题1:理想情况下,我想遵循widgetAPI.com/tabs/1 的设计,也返回给定选项卡的所有widgetInstances,但是使用这种设计,widgetAPI.com/tabs 可能会返回太多数据,因为我必须这样做返回所有选项卡的所有小部件。因此,我需要创建一个单独的“widgetAPI.com/tabs/1/widgets”URL,但它还必须返回选项卡元数据,因为我不想进行两次 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所以有一条规则我还没有完成。我需要返回所有可用的 widgetTypes,但我不确定如何将此请求放入前两个控制器中。我目前倾向于单独服务。所以像 widgetAPI.com/getWidgetTypes 这样的东西。想法?
多谢你们。如果您可以对整体设计进行评论,只需解决问题或提及我应该注意的任何事情,那就太好了,因为这是我第一次设计 RESTful 应用程序。再次感谢。