WebAPI通过HttpClient删除列表

4
在我的WebApi中,我希望有一个方法能够接受ID列表作为参数并将它们全部删除。因此,这个方法看起来应该像下面的代码一样。
[HttpDelete]
public IHttpActionResult DeleteList([FromBody]IEnumerable<int> templateIds)

我需要使用.NET的HttpClient编写单元测试。因此,我的问题是:如何使用HttpClient DeleteAsync将Id数组/列表传递给WebApi?

重复的问题:如何为HTTP DELETE方法设置RequestBody - Kell
1
你考虑过使用内置的HTTP批处理支持吗? - Cory Nelson
1个回答

5
据我所知,在Web Api中,使用HTTP DELETE发送消息正文会被忽略。一种替代方法是从Uri中获取Id列表:
    [HttpDelete] 
    public void DeleteList([FromUri]IEnumerable<int> ids)

然后使用以下链接调用: http://server/api/ControllerRoute/ids=1&ids=2

如果要从HttpClient中调用此功能,则可以直接调用DeleteAsync,因为所有数据都在Url中。

您还可以分解System.Web.HttpUtility以帮助您构建Url中的查询字符串,例如:

        var httpClient = new HttpClient();
        var queryString = HttpUtility.ParseQueryString(string.Empty);
        foreach (var id in ids)
        {
            queryString.Add("ids", id.ToString());
        }
        var response = httpClient.DeleteAsync(queryString.ToString());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接