HttpClient 的 WebAPI 删除列表

Mar*_*yan 4 c# unit-testing httpclient asp.net-web-api

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

[HttpDelete]
public IHttpActionResult DeleteList([FromBody]IEnumerable<int> templateIds)
Run Code Online (Sandbox Code Playgroud)

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

:)

Mar*_*inM 5

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

    [HttpDelete] 
    public void DeleteList([FromUri]IEnumerable<int> ids)
Run Code Online (Sandbox Code Playgroud)

然后使用以下网址调用网址: 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());
Run Code Online (Sandbox Code Playgroud)