1

我正在通过 DHIS2 和在线数据开发一个反应应用程序,其结构如下:

indicators: [
  {
   name: "something",
   attributeValues : [ {}],
   anotherNode: "anything",

  },
 {},
 {}, ...
]

我正在尝试更新整个属性值节点。我正在使用获取请求,但得到

405 方法不允许

你认为我做错了什么。这是我写的获取帖子请求。

let dataToSend = {
  lastUpdated: currentTime,
  created: currentTime,
  value: newName,
  attribute: {
    id: indicatorID,
  },
};

fetch(`https://www.namis.org/namis1/api/indicators/${id}/attributeValues`, {
  body: JSON.stringify(dataToSend),
  headers: {
    Authorization: basicAuth,
    "Content-type": "application/json",
  },
  method: "POST",
}).then((response) => response.json());

如果问题恰好是重复的,请指导我可能已经存在的解决方案。

问候。

4

1 回答 1

1

所以问题得到了解决。我不知道它是 DHIS2 系统还是什么,但我不能只更新指标的一个节点,也因为 POST 用于创建不存在的节点。

因此,使用 PUT 请求的正确方法,同时,不只是将新数据传递给 attributeValues 节点,而是更新整个指标节点,即正确的方法应该是:

let dataToSend =  {
 name: "something",
 attributeValues : [ {
   lastUpdated: currentTime,
   created: currentTime,
   value: newName,
   attribute: {
     id: indicatorID}
 }],
anotherNode: "anything"}



fetch(`https://www.namis.org/namis1/api/indicators/${id}`, {
body: JSON.stringify(dataToSend),
headers: {
  Authorization: basicAuth,
  "Content-type": "application/json",
  },
  method: "PUT",
  }).then((response) => response.json());

所以终点是indicatorID,要发送的数据还包括要更新的指标中的其他节点,变化的只是attributeValue节点。

如果有人遇到相同的挑战并且无法理解此答案,请与我联系以获取更多信息。

于 2020-08-13T13:28:51.103 回答