代码之家  ›  专栏  ›  技术社区  ›  sfussenegger

REST:我应该重定向到实体的版本URL吗?

  •  13
  • sfussenegger  · 技术社区  · 14 年前

    我现在在做休息服务。这个服务有一个不同版本的实体,类似于维基百科的文章。

    现在我在想,如果有什么需要的话,我应该回去

    GET /article/4711
    

    GET /article/4711/version/7
    

    还是直接返回当前版本?使用重定向将大大简化HTTP缓存(使用Last-Modified),但也有重定向的缺点(额外请求,“更难”实现)。因此,我不确定这是否是一个好的做法,虽然。

    有什么建议、建议或经验可以分享吗?

    5 回复  |  直到 14 年前
        1
  •  11
  •   rytis    14 年前

    如果将版本视为实体(从外观上看是这样的),我建议:

    GET /article/4711

    /article/4711 容器实体。

    GET /article/4711/latest

    返回最新版本的内容。你可能想考虑一下 /version/latest 与以下内容保持一致。

    GET /article/4711/version/7

    返回文章的特定版本。

        2
  •  2
  •   rjh    14 年前

    GET /article/4711 . 如果它总是指向最新版本,那么它应该直接返回最新版本。重定向到某个特定版本似乎有问题,因为您依赖于用户/客户机库将来不访问该特定URL。要翻译成HTML术语,用户可以将 version/7 他们现在访问的是一个旧版本,而不是他们最初在地址栏中输入的最新版本。

        3
  •  2
  •   Jan Algermissen    14 年前

    http://tools.ietf.org/html/draft-brown-versioning-link-relations .

    使用CMIS链接关系和HTTP链接头,可以使/article/4711成为最新版本,并提供到版本的链接,例如link:</第/4711条/版本>;rel=版本历史

        4
  •  2
  •   Chris McCauley    14 年前

    文章版本和超文本

    如果你真的担心让界面保持安静,那么你应该考虑如何在一个 哈特奥斯

    在我看来,这将意味着返回足够的信息,用户能够浏览您的实体的修订列表。如果你从罗伊那里读到这个。。。

    ... 你会感觉到你的 GET /article/4711 我们应该把足够的信息

    1. 获取文章的最新版本

    2. 获取下一个/上一个版本

    你会知道什么对你的模型最有效,但是作为一个指针你可以考虑使用标签

      <link rel="older"
            type="text/html"
            href="http://www.yourdomain.com/article/4711?version=6"/>
    

    ...

        5
  •  1
  •   Brian R. Bondy    14 年前

    我认为返回一个修订列表会更安静:

    GET /article/4711
    

    您还可以:

    GET /article/4711/current
    

    直接返回当前版本。