假设我有一家像亚马逊这样的商店,销售各种产品,如、计算机、和绘画。他们之间有很大的不同,有自己的一套领域和逻辑。
除了典型的CRUD之外,我还需要设计一个JSON,它允许我:
获取绘画、和computers的未分组列表。例如:按发布日期排序的[computer, painting, painting, computer, ...] (具有过滤功能)。
B.只取画
C.只取计算机
RESTful方法通常类似于:/api/paintings和api/computers,这对于隔离结果非常有效。
但我主要关心的是操作A -获得一个按出版日期排序的未分组的绘画和产品列表。在我看来,有三种方法:
1)创建一个名为products的新独立资源,如/api/products,它将具有过滤功能,并继续使用/api/resource进行特定的CRUD操作。
2)创建用于过滤操作的父products资源。所以我可以做一些像/products?order_by=published_date这样的事情,对于更具体的资源,我可以做一些像/products/paintings或/products/computers这样的事情
3)没有绘画、或computers的资源。相反,为一个通用的product设置一个。然后,我将拥有api层中的大部分逻辑,并降低客户端的复杂性。
我倾向于方法3,但希望在实现之前获得反馈,因为这将是API的核心特性。
发布于 2016-11-14 20:33:47
我一直采用API层应该与对象建模相匹配的方法。所以,你的问题的答案是它将取决于源数据。在对象建模之后的源数据。
如果您有计算机和打印机的对象模型,那么它们应该是您所说的资源。他们是否共享任何数据/功能?如果是这样的话,您也应该有一个对象模型,可能还有:产品。然后计算机和打印机扩展Product。
考虑到这一点,设计API层来反映它。因为计算机和打印机都扩展了产品。产品作为计算机和打印机资源的母公司是有意义的。
发布于 2016-11-14 20:15:56
在我看来,如果您搜索API,我会选择第3种方法,并使用产品类型查询API。
/products?type=computers&order_by=datehttps://stackoverflow.com/questions/40595635
复制相似问题