HttpDelete采用多个参数进行批量删除

时间:2019-02-01 13:08:21

标签: c# asp.net asp.net-web-api asp.net-core react-admin

我正在开发一个将由react-admin客户端应用程序使用的API。根据我们的前端开发人员的说法,react-admin支持通过发送HTTP Delete请求(例如

)一次删除多个实体
DELETE /api/Entity/Delete?filter={"ids":[1,2,3]}

显然,此方法可以很好地处理单个id请求

[HttpDelete("{id}")]
public async Task<IActionResult> Delete(int id)

但是处理包含多个ID的请求的正确方法和途径是什么?显然,客户端请求格式仅用于演示目的,如果对此类型的请求有任何潜规则,则可以更改。

2 个答案:

答案 0 :(得分:1)

您可以将参数设置为数组:

[HttpDelete("Delete")]
public async Task<IActionResult> Delete(int[] id)

然后您这样称呼它:

DELETE /api/Entity/Delete?id=1&id=2&id=3

这将用id填充{ 1, 2, 3 }数组。

可以像在原始示例(?filter={"ids":[1,2,3]}中那样在查询字符串中放入JSON,但这并不容易。您必须handle the binding yourself

答案 1 :(得分:1)

提交多个ID时,我发现最好的方法是将它们作为JSON数组提交到正文中。

因此,URL为/api/Entity/Delete,正文为:

[ 1, 2, 3 ]

然后您可以收到它:

[HttpDelete("/api/Entity/Delete")]
public async Task<IActionResult> Delete([FromBody] int[] ids)
{
}