1

我正在尝试实施 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"]
  }
}
4

1 回答 1

2

你基本上有两个选择。

首先,您可以在请求中省略acpi。在这种情况下,CSE 会自动将一个(默认 ACP 资源)分配给新的 AE。然后,您将在创建请求的答案中获得该分配的acpi

但这可能不是您想要的,因为您最终可能会得到一个无法反映您需要的实际权限的分配 ACP。

第二种方法是您自己为 AE 创建 ACP。这与创建 AE 资源非常相似,只是使用了 ACP 结构。CSE 负责检查您是否正确指定了所有内容并在允许的权限范围内。在答案中,您将获得新 ACP 资源的资源标识符 ( ri ),然后您将在创建 AE 资源时将其分配给acpi属性。

对于第二种方法,最好先查找 ACP 资源,因为它可能已经存在(或者由 AE 在应用程序的先前运行期间如上所述创建,或者甚至由例如,预先定义, CSE 管理员),因此您可以只检索它而不是创建它。

您应该使用结构化名称而不是ri来访问已知资源,例如预定义的 ACP。例如,您将尝试使用结构化名称/cse-id/cse-name/myACP而不是资源标识符访问 CSE 上的资源/cse-id/acp-12345。这种方法需要你构造结构化的名字,它有点长,但好处是它反映了资源结构,使资源可以通过资源树的路径访问,而资源标识符很短,但不反映资源结构。

于 2018-03-28T22:55:32.657 回答