是否RESTful限制资源属性?

时间:2009-01-30 11:26:50

标签: rest

我们的资源包含数十个字段(属性)。我们的一些客户不需要所有资源的属性。为了节省网络负载,我们实现了一个查询字符串参数来限制资源属性。 例如,下一个URL将返回包含所有字段的资源集合:

http://myapp/myresources

但是当客户只需要特定字段时,他可以通过调用:

来完成

http://myapp/myresources?fields=f1,f2,f13,f22

我们的架构师认为这种方法不是RESTful。

您怎么看?

2 个答案:

答案 0 :(得分:1)

如果您将其实现为同一资源的新媒体类型(表示),那将是RESTful。这将是一个不完整的表示,但仍然是一种表示。假设你有这个资源:

/ MyApp的/为MyResources

是某种资源的完整表示的集合。 拥有相同集合的不同表示是完全可以的。但是,如果您希望它与REST兼容,则应将其实现为新的媒体类型(格式)。

然后,您可以使用设置为所需媒体类型的Accept标头查询集合,也可以使用“扩展样式的媒体类型” - 例如。 /myapp/myresources.f1_f2_f3。

你的情况有点棘手,因为你的媒体类型会在飞行中发明,但我认为这并非不可能。

答案 1 :(得分:1)

如果你不再区分资源和字段,问题就会消失。

如果资源/myresource有两个“子资源”/myresource/f1/myresource/f2,则通过指定列表/myresource/f1,f2来同时获取两个子资源是有意义的。< / p>