REST API中的资源建模(时间序列数据和多个标识符的问题)

时间:2015-11-13 20:36:53

标签: api rest

我在为域中的资源建模以适应REST API时遇到了一些麻烦。这个例子显然是做作和简化的,但它说明了我陷入困境的两点。

我知道:

  1. 用户有宠物
  2. 一只宠物有多个名字 - 每个家庭成员一个
  3. 宠物有:出生日期,死亡日期和类型(狗,猫......)
  4. 我需要能够根据日期进行查询(实际上,在询问宠物时,日期或日期范围是强制性的)。例如:告诉我现在有哪些宠物;告诉我奶奶说5年前我们养过的宠物,直到3年前。
  5. 我该如何处理日期?

    一个。在查询字符串中:/ pets / dogs / d123?from = 10102010& to = 10102015(但据我所知,查询字符串主要用于可选参数;日期/日期范围是必需的。我在考虑拥有当前日期默认情况下,如果查询字符串中没有任何内容。有任何想法吗?)

    湾在路径的某个地方。之前/宠物?当我在日期和日期范围之间切换时,这似乎有点奇怪。我真正的道路已经很长了

    我该如何处理多个名字?

    我看到它的方式,我必须指定谁使用我正在搜索的名称。

    / pets / dogs / rex - >我想知道叫做rex的狗(由谁,我还是奶奶?)。但在哪里放奶奶?

    我看到有些人说不要担心网址,并使用超媒体但我理解的方式(而且我可能错了)是你必须始终从根开始(这里/宠物) )并按照回复中提供的链接进行操作。然后我就更加困难了(因为这个日期确实存在很长的可能性)。

    感谢任何帮助。感谢

1 个答案:

答案 0 :(得分:0)

如果需要,您可以使用查询字符串,对此没有限制。路径包含层次结构,而查询包含非层次结构部分,但这也不是必需的。

通过查询,我建议您考虑参数以及响应中的内容。例如:

  

我想知道叫做rex的狗(由谁,我还是奶奶?)

参数是:grandmadog,您在回复中需要GET /pets/dogs/?owner=grandma&name=rex个。

因此,超链接将类似于GET /pets/dogs/owner:grandma/name:rex/$(document).ready(function() { $.fn.dataTable.moment('DD/MM/YYYY HH:mm'); $('#example').DataTable(); }); 等...如果您将一些RDF元数据附加到超链接和参数,则URI结构并不重要。你可以使用https://schema.org/AnimalShelter词汇。 OFC。这不是最合适的,因为它不关心多人给出的多个名字,但如果您决定使用RDF,那么创建自己的词汇是一个良好的开端。