我尝试通过 IBM Maximo 中的 REST 服务创建自定义对象的记录。 问题是我创建了记录,但无法为属性分配值。
接下来我将展示我做了什么以及发生了什么:
我有一个名为 oxato 的对象结构,它代表我的自定义对象。
我使用 POSTMAN 向此 URL 发送了一个 POST:
http://hostname:port/maximo/oslc/os/oxidato?lean=1
在正文部分,这是我试图发送的 JSON:
{ "attribute1":"205", "attribute2":"206" }
在我看来,REST 服务收到了 POST,但无法读取正文。
EDIT1:我更新了 POST 以便使用最新的 API RES(感谢 Dex!)
编辑2:我添加了标题的图像
我发现 Maximo 通常会忽略不在 Maximo 命名空间中的传入属性 (http://www.ibm.com/maximo)。您可能会遇到将 VALOR1 和 VALOR2 属性设置在该命名空间中的麻烦,但告诉 OSLC 忽略命名空间会更容易。您可以通过将“lean”参数设置为“1”来实现这一点。
在您的情况下,转到“Params”选项卡并添加名称为“lean”的条目。将其值设置为“1”,然后再次发送您的 POST。您应该看到“?lean=1”出现在顶部 POST URL 的末尾,但您的正文内容应保持不变。
编辑: 另一方面,看起来(根据您的 URL)您实际上并没有使用较新的 JSON/OSLC REST API;您似乎正在使用较旧的 REST 服务。此 IBM 页面为您提供了有关较新 JSON REST API 的大量信息,包括其正确的 URL:https://developer.ibm.com/static/site-id/155/maximodev/restguide/Maximo_Nextgen_REST_API.html 。 您应该将 URL 更改为 /maximo/oslc/os/odiumto,以使用自然支持 JSON 和上述精简参数的较新 API。但这确实需要 Maximo 7.6 才能使用。
编辑2: 这些属性通常对大小写敏感,需要小写。您的“attribute1”和“attribute2”问题中的示例是正确的小写字母,但您的屏幕截图显示大写属性名称。尝试将它们更改为“valor1”和“valor2”。而且,这些都是持久属性,对吗?
收到的响应代码(例如 200 - OK)和响应正文将详细说明所创建的记录。
我认为您是正确的,因为帖子请求的正文被忽略了。如果自定义 MBO 上没有必填字段,您的 POST 可能会使用关键字段序列中的下一个值创建一个空记录,但您应该在响应中看到这一点。
以下 POST 应使用为 attribute1 和 attribute2 提供的值创建一条记录,并提供带有记录标识符的响应,以便您可以在 Maximo 中查找它并显示为 attribute1 和 attribute2 存储的值:
http://hostname:port/maximo/rest/os/oxidato/?_format=json&_compact=1&attribute1=205&attribute2=206
Response: 200 OK
Reponse Body:
{ "CreateOXIDATOResponse": {
"rsStart": 0,
"rsCount": 1,
"rsTotal": 1,
"OXIDATOSet": {
"OXIDATO": {
"rowstamp": "[0 0 0 0 0 -43 127 13]",
"ATTRIBUTE1": "205",
"ATTRIBUTE2": "206",
"OXIDATOID": 13
}
} } }
您可能还想在系统配置 -> 平台配置 -> 日志记录中打开 REST 接口的调试日志记录,以获取有关日志文件中发生的情况的更多详细信息。
我也有同样的问题。就像 maximo 忽略了请求正文一样。
你找到解决办法了吗? 预先感谢。