HTTP资源的父路径是否应始终拥有资源?

时间:2012-04-10 16:02:57

标签: http rest architecture

如果网站在路径中有资源:

/things/27

是否有任何已发布的标准表明路径:

/things

因此,还应该有资源吗?

我和一位同事讨论过这个问题,并且来自Unix背景(并且记住了基于文件结构的HTTP服务器的旧版本),我倾向于回答是,隐含父资源而父母代表不应该' t 404.

然而,我的同事认为,除非在网站某处有'/ things'的特定链接,否则不需要资源在这条路径上。

RFC2616或其他HTTP标准文档中是否讨论过此事?是否有关于该主题的其他相关文档?

1 个答案:

答案 0 :(得分:1)

如果您正在考虑在应用程序中实现超媒体,以便在给定点为客户端提供一组可能的操作(将URI链接到其他适当的资源),那么/things URI是发送的理想位置这些链接的GET。

以下是/things资源上GET的示例结果。这种方法的优点是可以对客户端进行编码,以查找Rel中的Links值,而不必“知道”如何构造URI。即使客户端确实需要构建URI,它仍然可以编码以搜索搜索链接href中的{searchTerm}等项目,以替换为适当的值。

   "Things": [
      {
         "Description": "Resource level properties that make sense to put here",
         "Count": 33,
         "Links": [
            {
               "Rel": "self",
               "Method": "GET",
               "Href": "http://yourDomain/things",
               "Title": "Things resource"
            }
         ]
      }
   ],
   "Navigation": [
      {
         "Links": [
            {
               "Rel": "GetItem",
               "Method": "GET",
               "Href": "http://yourDomain/things/{id}",
               "Title": "Get a single item"
            },
            {
               "Rel": "Search",
               "Method": "GET",
               "Href": "http://yourDomain/things/?searchTerm={searchTerm}&itemsPerCall={itemsPerCall}",
               "Title": "Search items per term"
            }
         ]
      }
   ]