2013-05-21 81 views
1

下面是一个例子网址:描述REST风格的URL

/users/123/comments 

在此基础上的网址,其中任期将最好的形容users?是users的资源还是它的一部分资源。那部分的名字是什么?

对于其他部分也是同样的问题。哪些术语最能描述123comments

是否有一个术语会引用RESTful URL的第二部分?它将描述/users/123中的123/me/purchases中的purchases

回答

0

REST是一个面向资源的。网址代表资源。

在你的榜样,/users/123/comments

  • users是一种资源。
  • 123是用户的唯一标识符。
  • 在这种情况下,评论是用户的一个子资源,但他们很可能是对自己的资源(例如,呼叫/comments/{id}

关于你的第二个问题,为/me/purchases格式是不与/users/123相同。而/me/purchases可能是类似的东西/users/{myid}/purchases短网址,其中purchases网友(也可能是一个由/purchases/{id}上也是自己的,可用的资源)的子资源。


欲了解更多信息,here is a video,不直接关系到你的问题,但是这是很有见地的约REST Web服务非常有趣。

0

在您的示例中,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空间,但这些服务器的私有实现细节。

为REST URL没有这样的事情。这个术语是一个框架设计师的作品,只会让你迷惑。

+1

我不同意'format = xml'格式= json' format = html'指向不同的资源。他们指向相同的资源,但指向该资源的不同表示。我可能是错的,但这是我以前见过的 –

+0

@HugoDozois这里http://tech.groups.yahoo.com/group/rest-discuss/message/11147是Roy Fielding从2008年开始的一篇文章,他描述两个URI只通过“扩展名”与“特定于格式的**资源**”不同 –