假设我有一个照片库,其中包含类似这样的数据库(Word中的rushy模型^ _ ^):
我为它编写了一个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 / galleries /:categoryID /:galleryID 查询的结果中?或者也许创建一个名为“show-all”的独立资源?即 / api / galleries /:categoryID / all / show-all 并返回与图片相结合的信息?
答案 0 :(得分: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
答案 1 :(得分: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
表中,它将使数据库更简单。