【问题标题】:REST: not all representations immediately availableREST:并非所有表示都立即可用
【发布时间】:2015-08-25 08:45:20
【问题描述】:

我正在为我的应用程序设计 RESTful API。我有多语言的实体。我想知道我是否应该将此实体视为具有多种表示形式的资源——每种支持的语言一种,或者我应该做多种资源并在 URI 中引入语言部分。

在我的例子中,实体的生命周期如下:

  • 用户在 EN 语言版本中添加实体,
  • 一段时间后(可能是 几个月或从不)用户添加其他语言版本。

在有效的 RESTful 设计中,所有的表示都应该在将资源发布到服务器后立即可用吗?或者也许 REST 允许由于业务流程而不是架构更改而添加新的表示形式(实现沿 JSON 获取 XML 表示的可能性不是这种情况)?

【问题讨论】:

    标签: rest resources multilingual representation


    【解决方案1】:

    您可以使用 HTTP 标头“Accept-Language”来指示要获取的语言 - 或在 URL 中包含该语言 - 或两者兼而有之。

    使用标头似乎是最优雅的方式,因为您的资源将拥有适用于所有语言的稳定 URL。这意味着您的资源将由一个且只有一个 URL 标识。

    另一方面,将 URL 共享到资源的一种特定语言版本可能很有用 - 通过在 URL 中包含语言。这意味着您的资源将由许多不同的 URL 标识 - 从概念上将其拆分为多个资源。

    这两种方式都是有效的解决方案,不会破坏任何 REST 约束。

    REST 确实允许您随着业务的发展随着时间的推移添加相同资源的新表示。一个资源(由一个 URL 标识)可以有多种表示形式,具体取决于各种 HTTP 标头 - “Accept-Language”是一种,就像“Accept”指示客户端喜欢的格式(JSON/XML/HTML/其他)一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      • 1970-01-01
      相关资源
      最近更新 更多