【问题标题】:Describing RESTful URLs描述 RESTful URL
【发布时间】:2013-05-21 11:39:38
【问题描述】:

这是一个示例网址:

/users/123/comments

根据此 URL,哪个术语最适合描述 usersusers 是资源还是资源的一部分。那部分的名称是什么?

同样的问题也适用于其他部分。哪些术语最适合描述123comments

是否有一个术语可以指代 RESTful URL 的第二部分?它将在/users/123 中描述123,在/me/purchases 中描述purchases

【问题讨论】:

    标签: http rest url terminology restful-url


    【解决方案1】:

    REST 是面向资源的。 URL 代表资源。

    在你的例子中,/users/123/comments:

    • users 是一种资源。
    • 123 是用户的唯一标识符。
    • 在这种情况下,cmets 是用户的子资源,但它们可能是自己的资源(例如,调用 /comments/{id}

    关于第二个问题,/me/purchases 的格式与/users/123 的格式不同。而/me/purchases 可能是类似/users/{myid}/purchases 的短URL,其中purchases 是用户的子资源(也可能是他们自己的资源,/purchases/{id} 提供)


    如需了解更多信息,here is a video,这与您的问题没有直接关系,但关于 REST Web 服务的内容制作精良且非常有趣。

    【讨论】:

      【解决方案2】:

      在您的示例中,http://example.org/users/123/comments 指向一个资源。完整的 URI 是资源的标识符。

      让我举个极端的例子,

      /users/123/comments.xml

      /users/123/comments.json

      是两种不同的资源。

      查询字符串也标识资源,所以

      /users/123/comments?format=xml

      /users/123/comments?format=json

      也是两种不同的资源。

      资源不映射到实体。资源是您希望通过 HTTP 公开并使用 URI 标识的“某些概念”。

      在 RESTful 系统中,URI 对系统设计是不透明的。您系统的客户端不应尝试从您的 URI 部分推断含义。服务器可以设置约定来帮助它构建 URI 空间,但这些是服务器的私有实现细节。

      没有 RESTFul url 之类的东西。该术语是框架设计人员的虚构,只会让您感到困惑。

      【讨论】:

      • 我不同意format=xmlformat=jsonformat=html 指向不同的资源。它们指向相同的资源,但指向该资源的不同表示。我可能错了,但这是我以前见过的
      • @HugoDozois Here tech.groups.yahoo.com/group/rest-discuss/message/11147 是 Roy Fielding 在 2008 年发表的一篇文章,他将两个仅通过“扩展名”不同的 URI 描述为“格式特定的资源”跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-10
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多