5

这是一个示例资源树。

我需要一起检索cnt-2cnt-0的最新 48 小时数据。我应该在请求中输入什么样的查询字符串?

/in-cse
   /in-cse/ae-123
      /in-cse/cnt-2
         /in-cse/cin-21
         /in-cse/cin-22
         /in-cse/cin-23
   /in-cse/ae-124
      /in-cse/cnt-0
         /in-cse/cin-01
         /in-cse/cin-02
         /in-cse/cin-03
      /in-cse/cnt-1
         /in-cse/cin-11
         /in-cse/cin-22
         /in-cse/cin-33

我应该将cnt-0 和 cnt-2的id放在哪里?

/onem2m/api/v1/~/in-cse?fu=2&crb=20190808T000000&cra=20190806T000000&ty=4

我也应该只使用查询字符串进行发现还是发出 POST 请求有效?

4

1 回答 1

2

通过您问题中的示例请求,您还将获得cnt-1的所有匹配 <contentInstance> 资源,因为您在 IN-CSE 级别进行发现。不幸的是,您不能在一个请求中拥有多个目标,但我看到至少有两种解决方案可以适用于您的用例:

  • 您可以为两个 <contentInstance> 资源添加标签,并将标签添加到您的搜索中。
    /onem2m/api/v1/~/in-cse?fu=2&crb=20190808T000000&cra=20190806T000000&label=myLabel&ty=4
  • 您可以添加一个 <group> ,其中包含对您的用例很重要的 <container> 资源(即cnt-0cnt-2),并使 <group> 的 fanoutPoint 成为您的发现请求的目标。然后 CSE 负责将发现重定向到 <group> 的每个成员。
    /onem2m/api/v1/~/in-cse/aGroup/fopt?fu=2&crb=20190808T000000&cra=20190806T000000&ty=4

在我看来,第二种方法更“优雅”,因为它使两个 <container> 资源的(应用程序)关系更清晰,但如果您的 <contentInstance> 资源无论如何都使用标签进行标记,第一种方法也可能是可行的。

关于 POST 请求:对于 HTTP 绑定查询参数只允许用于过滤和发现。请查看 TS-0009,第6.2.2.2 节查询组件

顺便说一句,oneM2M 目前正在进行讨论,以更好地描述检索和发现之间的差异。

于 2019-08-07T11:35:21.570 回答