我在我的领域模型中有一个具体的例子,现在我有一些困难来设计这种情况在其他的方式。
我有三个实体在我的领域:订单,卖方和公司
公司就像一家小公司,属于另一家公司(更大),就像一个品牌。例: Zappos是亚马逊的一个品牌。
卖方是一家可以在品牌门户/网站上销售产品的公司,例如:市场场所。
最后,订单可以属于一个品牌(例如: Amazon或Zappos),也可以属于销售商。
在Order实体中,我认为它是API的主要资源:
GET order?status=NEW
GET order/{id}问题是:例如,我如何设计API来检索所有已打开的品牌订单或销售商订单?
我不能以这种方式创建(下面),因为我将有两个名为"order“的子资源,其中有两个不同的主资源:
GET seller/{id}/order?status=NEW
GET company/{id}/order?status=NEW如果我以这种方式创建(下面),我无法检索卖方或公司过滤的订单:
GET order?status=NEW这种方法的另一个问题是,由于订单总是属于资源(公司或卖方),因此似乎奇怪的是,这种资源作为主要资源单独存在。
解决这个问题的最好方法是什么?
发布于 2013-12-10 05:17:31
考虑以关系方式分离数据,以便您可以:
GET /orders
GET /sellers
GET /companies和:
GET /orders/{id}
GET /sellers/{id}
GET /companies/{id}其中每一个都将返回您定义的默认行数(按默认排序顺序),或者如果指定了id,则返回该特定行。
当您需要构建关系查询时,您可以:
GET /orders/?status=new&brand=zappos
GET /sellers/?status=new&company=amazon
GET /sellers/?status=closed&company=amazon&limit=10或者,如果需要更高级的关系查询,可以设计后端来处理简单的查询:
urlencode:status==new,date_created>1386652468
GET /orders/?ql=status%3D%3Dnew%2Cdate_created%3E1386652468不知道您的约束条件,我不一定推荐这是最好的/唯一的方法,但分离这样的数据是API最佳实践。您可以根据登录的用户来控制哪些品牌是可见的。如果您需要有人管理多个品牌,会发生什么情况?
https://stackoverflow.com/questions/20485100
复制相似问题