在我们的应用程序中,当我们通过 API 创建新对象时,我们会在c8y_Mobile
片段中发送 SIM 和 GSM 模块相关信息。该对象对功能有限的嵌入式设备进行建模,因此我们直接使用 HTTPS API。
PUT /inventory/managedObjects/myid HTTP/1.1
Host: mytenant.cumulocity.com
Authorization: Basic ....
Content-Type: application/vnd.com.nsn.cumulocity.managedObject+json
Accept: application/vnd.com.nsn.cumulocity.managedObject+json
{
"c8y_Mobile": {
"imei": 1234567890123456,
"imsi": 23456789011234567890,
"iccid": 01234567890123456789
...
}
}
托管对象按预期显示新片段:
...
"c8y_IsDevice": {},
"c8y_Mobile": {
"imei": 1234567890123456,
"imsi": 23456789011234567890,
"iccid": 01234567890123456789
...
},
...
当用户更改嵌入式单元上的 SIM 卡时,IMSI 和 ICCID 属性应在 managedObject c8y_Mobile 片段中更新。但是如果我们只发送这些属性,整个片段就会被覆盖:
PUT /inventory/managedObjects/myid HTTP/1.1
Host: mytenant.cumulocity.com
Authorization: Basic ....
Content-Type: application/vnd.com.nsn.cumulocity.managedObject+json
Accept: application/vnd.com.nsn.cumulocity.managedObject+json
{
"c8y_Mobile": {
"imsi": 23456789011234567890,
"iccid": 01234567890123456789
}
}
所以托管对象显示了这一点:
...
"c8y_IsDevice": {},
"c8y_Mobile": {
"imsi": 23456789011234567890,
"iccid": 01234567890123456789
},
...
请注意,imei属性和其他属性已丢失,并且不再存在于托管对象中。
为了保存数据并最小化事务,我想知道是否有一种方法可以更新片段而无需再次发送所有所需的属性。
我尝试使用 HTTP POST 而不是 PUT,但这给了我一个method not allowed
错误,如文档中所述。