我正在尝试删除一个必须在后端删除的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);
}
我试着在网上调查,但没有人真的问过类似的问题。感谢您的帮助。谢谢
OPTION 1您需要参数化数组元素,创建一个看起来像DELETE /api/v1/algo/configs?configIds[]=1&configIds[]=2&configIds[]=3
的字符串
OPTION2使用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());