HttpClient 的 WebAPI 删除列表

Posted

技术标签:

【中文标题】HttpClient 的 WebAPI 删除列表【英文标题】:WebAPI delete list by HttpClient 【发布时间】:2014-12-03 07:56:17 【问题描述】:

在我的 WebApi 中,我想让方法女巫接受 ID 列表作为参数并将它们全部删除。所以这个方法看起来像下面的代码。

[HttpDelete]
public IHttpActionResult DeleteList([FromBody]IEnumerable<int> templateIds)

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

:)

【问题讨论】:

重复***.com/questions/10093514/… 您是否考虑过使用内置的 HTTP 批处理支持 【参考方案1】:

据我所知,在 HTTP DELETE 中发送消息正文在 Web Api 中被忽略。另一种方法是从 Uri 中获取 Id 列表:

    [HttpDelete] 
    public void DeleteList([FromUri]IEnumerable<int> ids)

然后调用网址:http://server/api/ControllerRoute/ids=1&amp;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());

【讨论】:

以上是关于HttpClient 的 WebAPI 删除列表的主要内容,如果未能解决你的问题,请参考以下文章

利用HttpClient调用WebApi

java 通过httpclient调用https 的webapi

HttpClient 将 ClaimsIdentity 传递给另一个 WebApi

在 WebAPI 客户端中每次调用创建一个新的 HttpClient 的开销是多少?

使用HttpClient发送数据 到WebApi

为啥在 WebApi 上下文中的 using 块中使用 HttpClient 是错误的?