分组一个宁静的架构

时间:2013-04-10 11:57:23

标签: php mysql json api rest

假设我有一个照片库,其中包含类似这样的数据库(Word中的rushy模型^ _ ^):

enter image description here

我为它编写了一个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 并返回与图片相结合的信息?

2 个答案:

答案 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表中,它将使数据库更简单。