将内容传递给 deleteasync

passing content to a deleteasync

我有一个 Web api HttpDelete 控制器方法,它接受一个 id 数组作为参数。我想知道如何将一组 ID 传递给该方法。

我试图传递类似于 putasync 和 postasync 的 id,我可以在其中 jsonify id。 DeleteAsync,似乎不接受类似于其他网络 api 功能的 json 内容。下面是我的 HttpDelete 控制器方法:

    [HttpDelete]
    [Route("delete")]
    public HttpResponseMessage DeleteUsers(int[] ids)
    {
        if (ids != null)
        {
            ...Do stuff
        }

        throw error;
    }

我试图通过以下方式获得此方法:

    var Ids = new[] { 1,2,3 };
    string jsonString = JsonConvert.SerializeObject(Ids);
    var content = new StringContent(jsonString, Encoding.UTF8, _mediaType);

    response = HttpClient.DeleteAsync(endpoint,content).Result;

那么如何将多个 ID 作为数组传递给此方法?

有什么想法吗?

谢谢

HttpClient.DeleteAsync 似乎没有提供传递数据的重载。为什么不使用具有属性定义路由的 POST 方法,将数组发送到该方法,并在该特定 POST 方法内部执行删除逻辑?

大概是这样的:

[Route("api/controller/deleteObjects")]
[HttpPost]
public async Task DeleteObjects([FromBody]IEnumerable<int> ids)
{
    // whatever mechanism you're using to delete
}
[Route("api/APIController/delete")]
[HttpDelete]

public async Task DeleteObjects([FromUri]int[] ids)
{
    // whatever you want to do
}

您可以从 uri 发送 id 等参数。它对我有用。

 var Ids = new[] { 1,2,3 };
$.ajax({
    method:'DELETE',
    url: "/api/APIController/delete",
    params: {
       ids : Ids,
    },
    //additions if you need

    success: function(response) {

    },
    error: function(xhr) {

    }
});

VS2012 中的 DeleteAsync 似乎不允许发送 HttpContent,但 VS2013 允许。 See MSDN page here

所以我安装了 VS2013,然后在我的 VS2012 项目中添加了对 Microsoft.VisualStudio.Services.WebApi 的引用。

我现在可以将 DeleteAsync 与 HttpContent 一起使用。