在Microformats spec for RESTful URLs上:
GET /people/1
以HTML格式返回第一条记录
GET /people/1.html
以HTML格式返回第一条记录
和/people
会返回人员列表
/people.html
以HTML格式返回人员列表的正确方法是什么?
答案 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_html
或people?format=html
或people.html
或sandwiches
或123qweazrfvbnhyrewsxc6yhn8uk
作为返回HTML格式的人的URI。 客户端预先不知道任何这些URI ,它应该从其他资源中学习。人类可以看到<a href="/sandwiches">All People (HTML format)</a>
的结果,并了解会发生什么,而忽略看起来很奇怪的URI。
在结束语中,微格式网址约定页面绝对是而不是RESTful网址的规范 ,它仅仅是制作显然很容易被各种广告使用的URI的指导HTTP库出于某种原因,完全与REST无关。这些准则完全没问题,并且遵循这些准则会使您的URI看起来对于偶然看一眼URI的其他人来说是理智的(/sandwiches
无疑是奇怪的)。但即使引用的AtomPub协议也不要求条目存在于集合内......