【问题标题】:REST idiom for a sub-collection?子集合的 REST 习语?
【发布时间】:2010-06-26 16:19:51
【问题描述】:

我对 REST 的理解(当然仅限于 wikipedia page)是 GETing 集合的习语是 ../resource/,而项目是 ../resource/itemId

对于子集合有GETing 的标准习语吗?例如,如果集合中的项目有一些状态切换(比如状态 A, B, C, D),并且我希望能够请求状态为 B 的项目,是否有标准/常见/最佳实践方式来做那个?

如果没有,我目前正在摆弄以下语法选项:

../resource/B

../resource/state/B

../resource?state=B

你认为这些优点/缺点是什么?

【问题讨论】:

    标签: rest idioms


    【解决方案1】:

    你想在那里使用第三个,除了复数(因为你得到的不止一个)

    ../resources?state=B

    因为它准确地描述了你想要什么。您正在GETing 具有特定状态的资源。

    ../resource/B

    表示您正在获取由 B 唯一标识的特定资源

    ../resource/state/B

    表示您正在获取资源 state,属于 resource,由 B 唯一标识。

    如果您要处理有限数量的状态,另一种方法是使状态本身成为资源,并使资源成为该状态的子级。那么你会有

    states/B/resources

    【讨论】:

    • 你能详细说明复数吗?对于所有数据,成语似乎是 ../resource/,对于特定数据,../resource/id - 但你说后者应该是 ../resources/
    • 我想这是一个偏好问题。 Ruby on Rails 的实现方式始终是复数形式。 /resources 将是所有资源的列表,/resources/12 将显示具有唯一标识符 12 的资源
    【解决方案2】:

    REST 约束实际上并没有说明您如何命名资源。 REST 只是说资源应该有一个名字。

    话虽如此,Jamie 的回答可能是最明显的做法。您可以将命名 URL 与命名程序进行比较,没有对错之分,只是有些名称比其他名称更明显。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多