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之前

谢谢

RestClient DELETE操作Json错误

看起来,即使HTTP规范没有明确规定DELETE不应该有body,许多web服务器(或web代理)也会忽略它。

在语义上,当使用DELETE时,uri应该标识到DELETE的资源。这有点像使用GET。同样,在GET中,规范并没有禁止正文,但并不是很多web服务器(或web代理)在GET请求中真正支持正文。

更多信息,请看这篇文章

因此,实现DELETE的更好方法是将BasketItemReferenceGuidBasketReferenceGuid放在uri模板中。