【发布时间】:2017-03-28 11:55:46
【问题描述】:
假设我有一家商店,例如亚马逊,销售各种产品,例如 电脑 和 绘画。它们彼此完全不同,并且有自己的一组字段和逻辑。
除了典型的 CRUD 之外,我还需要设计一个 JSON API,它允许我:
A.获取绘画和计算机的未分组列表。例如:[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) 没有绘画或计算机的资源。取而代之的是一个通用的product。然后我会在 api 层拥有大部分逻辑,并降低客户端的复杂性。
我倾向于方法 #3,但希望在实施之前获得反馈,因为这将是 API 的核心功能。
【问题讨论】: