client.DeleteAsync-在主体中包含对象

nii*_*ico 3 asp.net-web-api dotnet-httpclient asp.net-mvc-5 asp.net-web-api2

我有一个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);
Run Code Online (Sandbox Code Playgroud)

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

有没有办法做到这一点?

Tod*_*ier 8

由于上级DeleteAsync不支持身体,因此您必须在便利性上放弃一些,但是“长距离”这样做仍然非常简单:

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);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。似乎在 DELETE 中使用 body 是非常规的,因此不是一个好主意?! (2认同)
  • 不典型但并非闻所未闻。不久前,我收到了一个 [请求](https://github.com/tmenier/Flurl/issues/91) 以将其容纳在我的 Flurl 库中。 (2认同)