我在这里使用sendgrid api:
它显示将一个字符串数组传递给DELETE调用。当我查看System.Net.Http.HttpClient的签名时,DELETE不允许传入内容。
是否有一个围绕DELETE的标准,不允许同时传递多个内容?
API定义:
答案 0 :(得分:0)
The HTTP/1.1 RFC states that a DELETE
request's payload has no defined semantics。
包含有效负载并不违法,但这意味着如果包含有效负载,则应忽略它。
许多HTTP客户端(例如.NET框架提供的HTTP客户端)在没有为该方法定义语义时,不提供包含有效负载的接口。
不幸的是,许多REST API确实需要使用这些方法的有效负载。您可以通过手动创建HttpRequestMessage
对象,设置Method
和Content
属性,并将其传递给HTTP客户端的SendAsync
方法来实现此目的。
答案 1 :(得分:0)
创建扩展方法
public static class HttpClientExtensions
{
public static Task<HttpResponseMessage> Delete(this HttpClient client, HttpContent content)
{
var request = new HttpRequestMessage { Method = "DELETE", Content = content);
return client.SendAsync(request);
}
}
但我无法推荐它,因为它打破了HTTP的基本假设,允许有效的HTTP代理工作。
&#34;正确的方法&#34;围绕这个问题是使用HTTP 2.0(或HTTP 1.1 Pipelining,由于它大部分被破坏而被弃用,但你可以尝试一下)来创建多个DELETE请求。从理论上讲,解决方案不需要任何代码更改。