2017-10-05 109 views
1

的RESTful API让我们假设我建立了一个餐厅的API,我有以下资源:人际关系

Donut(has_chocolate,has_sprinkles)

Receipt(cost,donut_id)

我的Web App将要显示经理查看的receipts表。不幸的是,receipt的对象本身并不够用,经理需要看看donut是否有巧克力。

如何最好的我做到这一点 - 我能想到的3个实现:

1)做一个JOIN和与has_chocolate附加字段

2)做一个JOIN返回receipt资源,并返回receipt包含所有相关的一个donut对象donut信息

3)拉receipt对象的页面资源,收集并删除重复的donut_ids,并利用它们在需要拉对象 - 一次一个/donut/id或全部一次/donuts?ids=id1,id2,id3

回答

1

RESTful API应该有解析为资源或资源集合的端点。然后,您可以在该端点上执行HTTP动词,在本例中为GET。因此,您需要决定如何为API用户定义资源?

是否有两个资源,甜甜圈和收据,就像在你的SQL? 是否要将甜甜圈定义为将收据作为其中一个字段的资源?

要么是没问题,问题是当你开始制作一个资源'有额外的东西'的路线。消费者开始变得难以理解而不是RESTful。

如果是我,我会选择选项3.

  • 定义两个单独的端点甜甜圈的收藏和收据:/v0/donuts//v0/receipts/
  • 让消费者参加在客户端通过暴露neccessary过滤器/v0/donuts/?ids=1,2,3,8

你可以做一个/v0/events/< id>/路线但看到用例是始终得到一批甜甜圈那么这将导致太多吧的消费者的nd旅行。

这听起来像你想分页这些集合。在这种情况下,您应该定义一个max_page_size,default_page_size,并且您应该在响应中返回您的客户端next_page字段(如果它是最后一页,则为null)。你还必须决定分页,可能是这种情况下的id。