繁体   English   中英

如何使用端点而不是一个 ID 传递要删除的 ID 数组

[英]How to pass an array of id's to delete using an endpoint rather than just one Id

我正在尝试删除必须在后端删除的 id 数组。 我将使用一个端点来接受这个并使用 redux 执行删除请求。 它将在端点:

DELETE /api/v1/algo/configs?configIds=1,2,3 

1、2 和 3 仅代表虚拟 id。 作为查询参数传递,响应看起来像这样:

{
    "configIds": ["1","2","3"]
}

以上这些是应该返回的(删除的数组)

这是我到目前为止在前端所拥有的,它是一个处理程序,应该异步地一个一个地删除数组,这样速率限制就不会变得疯狂。

async function deleteAll() {
        for (const id in filteredStoppedConfigs) {
          await actions.clearAllConfigs(filteredStoppedConfigs[id]);
        }
      }

filteredStoppedConfigs是要删除的 id 编号数组

这是我已经实现的用于删除一个 id 的端点。 它工作并完成工作。 但不确定如何在删除整个数组的新端点上实现它。 基本上清除了整个数组

async function deleteConfig(configId) {
  const options = {
    method: 'DELETE',
    headers: {
      'content-type': 'application/json'
    },
    url: `${ALGOS_API_ROOT}/configs/${configId}`
  };
  return axios(options);
}

一直在尝试在线研究,但没有人真正问过类似的问题。 任何帮助表示赞赏。 谢谢!

选项 1您需要参数化数组元素,创建一个类似于DELETE /api/v1/algo/configs?configIds[]=1&configIds[]=2&configIds[]=3的字符串

选项 2使用 POST 或 PATCH ROUTE 并在请求正文中传递数组的 JSON 字符串。 POST|PATCH /api/v1/algo/configs

{
    headers: ....,
    ....
    body: {
      ids: stringifiedArray
    },
    ....
}

选项 3不是超级鼓励像这样的简单端点很好: DELETE /api/v1/algo/configs

接下来,您可以对数组JSON.stringify(arrayHere)进行字符串化,并将该字符串化数组作为请求正文的一部分传递,如下所示:

body: {
  ids: stringifiedArray
}

然后,您将在后端收到此主体参数(将其列入白名单),对其进行解析,然后将其用于所需的操作

您可以如下更新deleteConfig以处理删除一个配置 ID 以及多个配置 ID 的请求

async function deleteConfig(configId) {
    const options = {
        method: 'DELETE',
        headers: {
            'content-type': 'application/json'
        },
        url: configId.includes(",") ? `${ALGOS_API_ROOT}/configs?configIds=${configId}` : `${ALGOS_API_ROOT}/configs/${configId}`
    };
    return axios(options);
}

处理删除一个配置 ID 的请求

deleteConfig(single_config_id);

处理删除多个配置 ID 的请求

deleteConfig(array_of_config_ids.join());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM