我在這裏使用sendgrid API:HttpClient的DeleteAsync與多個記錄
,它顯示傳遞字符串數組的DELETE調用。當我看看System.Net.Http.HttpClient的簽名時,DELETE不允許傳入內容。
是否有圍繞DELETE的標準,不允許同時傳遞多個內容?
API定義:
我在這裏使用sendgrid API:HttpClient的DeleteAsync與多個記錄
,它顯示傳遞字符串數組的DELETE調用。當我看看System.Net.Http.HttpClient的簽名時,DELETE不允許傳入內容。
是否有圍繞DELETE的標準,不允許同時傳遞多個內容?
API定義:
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
方法來完成此操作。
創建一個擴展方法
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代理工作的基本假設。
圍繞此問題的「正確方法」是使用HTTP 2.0(或HTTP 1.1管道,由於其大部分已被廢棄,但您可以嘗試使用)來創建多個DELETE請求。理論上說,解決方案不需要任何代碼更改。
謝謝@Aron這聽起來像我可以合作的答案。我忘記了我可以延續課程。我會測試它,然後循環回去,並在測試上述時標記爲已回答。 –
它在哪裏指定可以傳遞數組?看起來像一個單一的價值給我。 – usr
我同意@usr - 您鏈接到的國家recipient_id,而不是ID的方法。 –
鏈接到此處的圖片,其中顯示了多個收件人和示例的文檔:https://db.tt/n7RCvZmX –