为资源子集设计REST API的最佳实践

时间:2015-02-23 23:21:48

标签: rest

给定这样的URL结构:

 GET           /user/giftcards/:id

使用我的所有礼品卡返回列表时:

 GET           /user/giftcards

这里有我的问题,如果我还想要返回礼品卡的子部分,如收到或发送的内容,那么URL结构的最佳做法是什么?

今天我这样做(但我知道它错了,因为URL应该代表名词/资源(这里:giftcard)

 GET           /user/giftcardsreceived
 GET           /user/giftcardssent

我看到它的方式有两个"更好"解决方案:

 GET           /user/giftcards/received
 GET           /user/giftcards/sent

 GET           /user/giftcards?filter=received
 GET           /user/giftcards?filter=sent

我倾向于使用过滤的请求参数解决方案,因为其他解决方案可能会与基于id的GET冲突。

任何指向正确方向的人都会赞赏。

2 个答案:

答案 0 :(得分:2)

由于这对应于元素的子列表,因此应由处理此类元素列表的相同资源提供服务。因此,在我看来,使用查询参数会更好。

以下链接可为您提供其他提示:

希望它可以帮到你, 亨利

答案 1 :(得分:1)

我个人更喜欢查询参数样式,因为状态通常是资源的属性,而不是全新的资源本身。

查看Brian Mulloy关于api design的演讲。它可以像任何

一样开始