IBM Maximo REST 服务 POST 未在 MBO 上设置属性

问题描述 投票:0回答:3

我尝试通过 IBM Maximo 中的 REST 服务创建自定义对象的记录。 问题是我创建了记录,但无法为属性分配值。

接下来我将展示我做了什么以及发生了什么:

  1. 我有一个名为 oxato 的对象结构,它代表我的自定义对象。

  2. 我使用 POSTMAN 向此 URL 发送了一个 POST:

    http://hostname:port/maximo/oslc/os/oxidato?lean=1

  3. 在正文部分,这是我试图发送的 JSON:

{
    "attribute1":"205",
    "attribute2":"206"
}
  1. 记录已创建,但未填充任何属性。

在我看来,REST 服务收到了 POST,但无法读取正文。

我错过了什么?我添加邮递员的图像作为示例:

EDIT1:我更新了 POST 以便使用最新的 API RES(感谢 Dex!)

编辑2:我添加了标题的图像

rest maximo
3个回答
4
投票

我发现 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”。而且,这些都是持久属性,对吗?


2
投票

收到的响应代码(例如 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 接口的调试日志记录,以获取有关日志文件中发生的情况的更多详细信息。


0
投票

我也有同样的问题。就像 maximo 忽略了请求正文一样。

你找到解决办法了吗? 预先感谢。

© www.soinside.com 2019 - 2024. All rights reserved.