我们的资源包含数十个字段(属性)。我们的一些客户不需要所有资源的属性。为了节省网络负载,我们实现了一个查询字符串参数来限制资源属性。 例如,下一个URL将返回包含所有字段的资源集合:
但是当客户只需要特定字段时,他可以通过调用:
来完成http://myapp/myresources?fields=f1,f2,f13,f22
我们的架构师认为这种方法不是RESTful。
您怎么看?
答案 0 :(得分:1)
如果您将其实现为同一资源的新媒体类型(表示),那将是RESTful。这将是一个不完整的表示,但仍然是一种表示。假设你有这个资源:
/ MyApp的/为MyResources
是某种资源的完整表示的集合。 拥有相同集合的不同表示是完全可以的。但是,如果您希望它与REST兼容,则应将其实现为新的媒体类型(格式)。
然后,您可以使用设置为所需媒体类型的Accept标头查询集合,也可以使用“扩展样式的媒体类型” - 例如。 /myapp/myresources.f1_f2_f3。
你的情况有点棘手,因为你的媒体类型会在飞行中发明,但我认为这并非不可能。
答案 1 :(得分:1)
如果你不再区分资源和字段,问题就会消失。
如果资源/myresource
有两个“子资源”/myresource/f1
和/myresource/f2
,则通过指定列表/myresource/f1,f2
来同时获取两个子资源是有意义的。< / p>