【问题标题】:In what circumstance should I redirect the client to a more accurate URI在什么情况下我应该将客户端重定向到更准确的 URI
【发布时间】:2011-09-09 22:42:14
【问题描述】:

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

/人/列表

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

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

【问题讨论】:

    标签: http rest restlet resteasy


    【解决方案1】:

    在我看来,URL /person/list 应该返回一个未过滤的列表。要获得过滤后的列表,您必须明确指定 createAfter=2009。

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

    我会选择两种方法中的一种:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-09-11
        • 2015-06-22
        • 1970-01-01
        • 2020-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-23
        • 1970-01-01
        相关资源
        最近更新 更多