我正在尝试实施oneM2M标准。我查看了http://www.onem2m.org/application-developer-guide/application-registration
上的应用程序开发人员指南ADN-AE-1向MN-CSE发送注册请求但请求有效负载包含ACPI,我不明白ADN-AE-1如何知道ACPI?
POST /home_gateway?rcn=0 HTTP/1.1
Host: mn.provider.com:8080
X-M2M-Origin: C
Content-Type: application/vnd.onem2m-res+json; ty=2
X-M2M-RI: mncse-92345
{ "m2m:ae": {
"rn": "light_ae1",
"api": "A01.com.company.lightApp01",
"rr": "true",
"poa": ["http://192.168.0.10:9090"],
"acpi": ["/mn-cse/acp-805496226"]
}
}
答案 0 :(得分:2)
你基本上有两种选择。
首先,您可以在请求中省略 acpi 。在这种情况下,CSE自动为新AE分配一个(默认ACP资源)。然后,您将在创建请求的答案中获取该分配的 acpi 。
但这可能不是你想要的,因为你最终可能会得到一个不能反映你所需的实际权限的分配ACP。
第二种方法是您自己为AE创建ACP。这与使用ACP结构创建AE资源非常相似。 CSE负责检查您是否在允许的权限范围内正确指定了所有内容。在答案中,您将获得新ACP资源的资源标识符( ri ),然后在创建AE资源时将其分配给 acpi 属性。
使用第二种方法,最好首先查找ACP资源,因为它可能已经存在(如上所述,在上一次运行应用程序期间由AE创建,或者甚至是预先定义的,例如,CSE管理员),所以你可以检索它而不是创建它。
您应该使用结构化名称而不是 ri 来访问已知资源,例如:预定义的ACP。例如,您将尝试使用结构化名称/cse-id/cse-name/myACP
而不是资源标识符/cse-id/acp-12345
来访问CSE上的资源。此方法要求您构造结构化名称,该名称稍长一些,但其优点是它反映了资源结构并使资源可通过资源树访问资源,而资源标识符非常短,但不是反映资源结构。