对 Restful 架构进行分组
Posted
技术标签:
【中文标题】对 Restful 架构进行分组【英文标题】:Grouping a Restful Architecture 【发布时间】:2013-04-02 06:06:10 【问题描述】:假设我有一个照片库,有一个类似这样的数据库(Word 中的匆忙模型 ^_^):
我已经为它编写了一个 rest API。但是我对如何映射某个场景感到困惑……
/api/galleries - Lists all of the categories available
/api/galleries/:categoryID – Lists all of the galleries for this category
/api/galleries/:categoryID/:galleryID – Returns all of the info for a gallery
/api/galleries/:categoryID/:galleryID/images – Returns all images for a gallery
现在,我的问题是,如果我想在一个页面上列出所有画廊和所有图片怎么办?就目前而言,我必须调用 /api/galleries/ :categoryID/:galleryID/images/ 用于每个画廊。
您认为这样做的最佳做法是什么?也许完全删除图片资源,然后将图片合并到 /api/gallery/:categoryID/:galleryID 查询的结果中?或者也许创建一个名为“show-all”或其他东西的单独资源?即 /api/galleries/:categoryID/all/show-all 并返回与图像结合的信息?
【问题讨论】:
【参考方案1】:我绝不是该主题的专家,但对我来说,您的 api 似乎有缺陷。
怎么了
例如这个位置在说谎。
/api/galleries - Lists all of the categories available
我希望它返回一个画廊列表。
/api/galleries/:categoryID
我希望在这里传递画廊 ID。
我的建议
有一个更干净的 api。
/api/galleries // get all galleries
/api/galleries?expand=images // get all galleries with the images
/api/galleries/:id // get a specific gallery
/api/galleries/:id?expand=images // get a specific gallery with the images
/api/galleries/categories // get all galleries categories
/api/galleries/categories/:cat // get all galleries in a category
....
通过使用参数,API 不会因为您可能拥有的各种选项而变得杂乱无章。保持简洁。
这是一个关于 REST api 设计的非常好的视频的链接http://www.stormpath.com/blog/designing-rest-json-apis
还有
我认为不需要单独的 info
表。如果您将该信息添加到您的 gallery
表中,它将使数据库更简单。
【讨论】:
现在刚刚实现。 /api/galleries/categories/:cat 会提供画廊资源的索引,还是会返回画廊的数据(如 /api/galleries/)?谢谢 我会返回该类别中的画廊集合。【参考方案2】:为什么不这样使用。
/api/galleries - Lists all of the categories available
/api/galleries/:categoryID – Lists all of the galleries for this category
/api/galleries/:categoryID/info/:galleryID – Returns all of the info for a gallery
/api/galleries/:categoryID/images/:galleryID – Returns all images for a gallery
/api/galleries/:categoryID/images – Returns all images for a all galleries
【讨论】:
以上是关于对 Restful 架构进行分组的主要内容,如果未能解决你的问题,请参考以下文章
Java Web学习总结(44)—— RESTful 架构和 RESTful API 设计总结