RestClient DELETE操作Json错误
本文关键字:错误 Json 操作 DELETE RestClient | 更新日期: 2023-09-27 18:06:10
我试图与RestClient进行删除操作,但我无法在请求体中包含我的Json对象。这是我的代码:
var client = new RestClient(WebService);
var request = new RestRequest(string.Format("/api/v1/{0}/{1}", controller, action), method);
request.AddHeader("Accept", ContentTypeApplicationJson);
request.RequestFormat = DataFormat.Json;
request.AddHeader("Content-Type", ContentTypeApplicationJson);
request.AddCookie(".ASPXAUTH", AspxAuth);
request.AddBody(jsonObjectRequest);
var response = client.Execute(request);
var jsonResponse = string.Empty;
using (var stream = new MemoryStream(response.RawBytes))
{
stream.Position = 0;
var sr = new StreamReader(stream);
jsonResponse = sr.ReadToEnd();
}
var jObjectDeserialize = GetJObjectDeserialize(jsonResponse);
在我的例子中ContentTypeApplicationJson = application/json和jsonObject是一个对象,其中包含:
{"BasketItemReferenceGuid": "样本字符串1","BasketReferenceGuid": "样本字符串2"}
这是我在Fiddler中的请求
<>之前DELETE http://local.webapi.com/api/v1/BasketV3Products/HTTP/1.1接受:application/json内容类型:application/jsonUser-Agent: RestSharp 102.4.0.0主持人:local.webapi.com饼干:.ASPXAUTH = E6D216034E2CB1A22466A501392B1E2E46601E345B8A0E7743D76CF2270ACFC8ED3C9F1F2F477C4499267222A250E4490291381EE68FE719E094EF1ACDD619B4D792341988F80CB67E8B5037D8ACF9FBABB74DE1E75A530AB432D85722D647771C6C576F8E810257CE9E60117DCEEFBD949EAD9E64C84898BDC5D691F957CE6266CF5652C693B86ED1D55907AAC5DC68内容长度:0Accept-Encoding: gzip, deflate之前谢谢
看起来,即使HTTP规范没有明确规定DELETE
不应该有body,许多web服务器(或web代理)也会忽略它。
在语义上,当使用DELETE
时,uri应该标识到DELETE
的资源。这有点像使用GET
。同样,在GET
中,规范并没有禁止正文,但并不是很多web服务器(或web代理)在GET
请求中真正支持正文。
更多信息,请看这篇文章
因此,实现DELETE
的更好方法是将BasketItemReferenceGuid
和BasketReferenceGuid
放在uri模板中。