RESTful URL和文件夹

时间:2010-07-19 17:05:56

标签: http url rest

Microformats spec for RESTful URLs上:

GET /people/1
以HTML格式返回第一条记录

GET /people/1.html
以HTML格式返回第一条记录

/people会返回人员列表

/people.html以HTML格式返回人员列表的正确方法是什么?

4 个答案:

答案 0 :(得分:1)

你有正确的想法。 /people/people.html都会返回HTML格式的人员列表,/people.json会返回JSON格式的人员列表。

对于将数据类型扩展应用于URL中的“文件夹”,应该不会产生混淆。在示例列表中,/people/1本身用作各种其他查询的文件夹。

答案 1 :(得分:1)

如果您只是引用URL路径扩展,那么,是的,该方案是内容协商的推荐行为:

  • 不带扩展名的路径是通用网址(例如,/people适用于任何可接受的格式)
  • 带扩展名的路径是特定网址(例如/people.json,作为JSON数据格式的内容类型特定网址)

使用这样的方案,服务器可以在请求通用URL时使用内容协商,并在请求特定URL时使用特定表示进行响应。

推荐此计划的文件包括:

答案 2 :(得分:0)

它说GET /people/1.json应该以JSON格式返回第一条记录。 - 这是有道理的。

答案 3 :(得分:0)

URI以及如何设计它们与RESTful无关

通常的做法就是按照你的要求行事,因为这就是Apache Web服务器的工作方式。假设你有foo.txt和foo.html以及foo.pdf,并且没有偏好地询问GET /foo(即没有Accept:标题)。将返回300 MULTIPLE CHOICES,其中包含三个文件的列表,以便用户可以选择。因为浏览器进行了如此奇妙的内容协商,所以很难链接到一个示例,但是这里有:An example显示它的外观,除了你首先看到页面的原因是不同的情况。文件名(“XSLT”vs“xslt”)。

但是这种Apache行为在约定和不同的工具中得到了回应,但实际上它并不重要。您可以将people_htmlpeople?format=htmlpeople.htmlsandwiches123qweazrfvbnhyrewsxc6yhn8uk作为返回HTML格式的人的URI。 客户端预先不知道任何这些URI ,它应该从其他资源中学习。人类可以看到<a href="/sandwiches">All People (HTML format)</a>的结果,并了解会发生什么,而忽略看起来很奇怪的URI。

在结束语中,微格式网址约定页面绝对是而不是RESTful网址的规范 ,它仅仅是制作显然很容易被各种广告使用的URI的指导HTTP库出于某种原因,完全与REST无关。这些准则完全没问题,并且遵循这些准则会使您的URI看起来对于偶然看一眼URI的其他人来说是理智的(/sandwiches无疑是奇怪的)。但即使引用的AtomPub协议也不要求条目存在于集合内......