在什么情况下我应该将客户端重定向到更准确的URI

时间:2011-09-09 22:42:15

标签: http rest restlet resteasy

我们有一个返回人员列表的RESTFul网络服务。

/人/列表

但是,企业只想回归“活跃”的人。即在2009年之后创建的人。

我建议将(307?)/ person / list重定向到/ person / list?createdAfter = 2009,因为这是资源的更准确表示。是否有意义?如果没有,为什么不呢?

2 个答案:

答案 0 :(得分:1)

在我看来,URL / person / list应返回未过滤的列表。要获取筛选列表,您必须明确指定createAfter = 2009。

我说这是在路上的想法。如果您的应用程序确实需要所有用户,该怎么办?如果你有一堆旧代码依赖于/ person / list神奇地重定向到过滤版本而你出于某种原因需要将URL / person / list更改为实际未经过滤的版本,该怎么办?然后你的旧代码就破了,因为它会拉动所有用户。

我会选择以下两种方法之一:

1)不要重定向。只有/ person / list默默地暗示只有活跃的人。在这种情况下,要获得非活动状态,您必须实际请求/ person / list?all或/ person / list?includingInactive或者其他内容(希望您明白这一点 - 您必须明确请求已禁用的那些)

2)实际在您的应用程序中使用带有?createAfter = 2009的URL。

我可能会选择第一个选项。它允许您保持活跃人员的逻辑,而不是在您的Web服务中而不是在应用程序中,这意味着URL的含义永远不会改变(只有/ person / list才会被理解为仅列表活跃的人)。

答案 1 :(得分:1)

使用/ person / list / active有什么问题?您知道2009年之后会创建活动,但定义可能会发生变化。