我必须设计一个RESTful API来获取与另一个相关的视频。用户可以使用某些属性过滤列表,例如日期,视频类型s.o.可能缺少属性的值,在这种情况下,我们将查找与之相关的内容的视频的给定属性的所有值。
我正在使用Ruby on Rails。
替代方案是:
1. video/ID/related/ATTRIBUTE?query="value of ATTRIBUTE"
2. video/ID/related?attribute="value of ATTRIBUTE"
3. video/ID/related/ATTRIBUTE/VALUE_OF_ATTRIBUTE
我必须提到的是,正如我之前所说的那样,值可能不存在,只有一个ATTRIBUTE基于其发生过滤,值是单数,从固定列表中选择。
答案 0 :(得分:1)
第一步:获取所有相关视频
在第一步中,您GET
与给定视频相关的所有视频。如果此视频位于
GET /video/{id}
然后相关视频可以在
GET /video/{id}/related
这将返回所有相关视频的完整列表。
第二步:过滤列表
如果您想过滤此列表,请使用第二种方法中的查询参数。
GET /video/{id}/related?some_attribute=foo&some_other_attribute=bar
反对1.和3的原因。
您的替代方案1.和3.介绍相关视频列表的新子资源ATTRIBUTE
。此子资源与相关视频列表中的任何内容都不对应。
<强>解决方案强>
使用第二种选择。