client.DeleteAsync - 在正文中包含对象

client.DeleteAsync - include object in body

我有一个 ASP.NET MVC 5 网站 - 在 C# 客户端代码中,我使用 HttpClient.PutAsJsonAsync(path, myObject) 可以很好地调用 Json API( API 也是我在 Web 中创建的 API).

client.BaseAddress = new Uri("http://mydomain");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.PutAsJsonAsync("api/something", myObj);

我想对删除动词做同样的事情。但是 client.DeleteAsync 不允许在正文中传递对象。 (我想在 URI 中记录删除的原因以及要删除的项目的 Id)。

有办法吗?

由于更高级别 DeleteAsync 不支持 body,因此在便利性方面您不得不放弃一些,但 "long way" 仍然非常简单:

var request = new HttpRequestMessage {
    Method = HttpMethod.Delete,
    RequestUri = new Uri("http://mydomain/api/something"),
    Content = new StringContent(JsonConvert.SerializeObject(myObj), Encoding.UTF8, "application/json")
};
var response = await client.SendAsync(request);