GET / DELETE背后的原因不能在webapi中有正文
为什么像GET
和DELETE
这样的HttpMethod
不能包含body ?
public Task GetAsync(Uri requestUri); public Task DeleteAsync(string requestUri);
同样在Fiddler,如果我提供一个身体,背景会变成红色。 但它仍将在身上执行。
因此,作为替代方案,我使用SendAsync()
因为它接受HttpRequestMessage
,它可以包含HttpMethod
以及内容 。
// other codes Category category = new Category(){ Description = "something" }; string categoryContent = JsonConvert.SerializeObject(category); string type = "application/json"; HttpRequestMessage message = new HttpRequestMessage(HttpMethod.Delete, "-page-") HttpContent content = new StringContent(categoryContent, Encoding.UTF8, type); HttpClient client = new HttpClient(); message.Content = content; await client.SendAsync(message, HttpCompletionOption.ResponseHeadersRead); // other codes
我错过了别的什么吗?
根据HTTP标准,GET方法旨在检索数据,因此不需要提供请求体。
添加请求正文违反了定义的规则。 因此禁止这样做。
这同样适用于DELETE方法。