OneM2M中条件检索的QueryString结构?

Bar*_*ğlu 5 onem2m onem2m-discovery

这是示例资源树。

我需要一起检索最近48小时的cnt-2cnt-0数据。我应该对请求添加哪种查询字符串?

/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
Run Code Online (Sandbox Code Playgroud)

我应该在哪里把cnt-0和cnt-2 的id放在querystring中?

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

另外,我应该只使用querystring进行发现还是发出POST请求有效吗?

And*_*aft 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 目前正在进行讨论,以更好地描述检索和发现之间的差异。