【发布时间】:2018-05-10 06:41:21
【问题描述】:
我是 API 调用的新手,我编写了 Create 和 Update 方法,它们工作正常,但 DeleteAsync 调用返回状态 204 但不删除项目。请求参数类似于"FieldsOfBusiness/13158?Code=%27555%27"。在 Postman 中用撇号替换 %27 时效果很好
public async Task<bool> DeleteAsync<T>(object id, NameValueCollection parameters)
{
var queryString = ToQueryString(parameters);
HttpResponseMessage response = await Client.DeleteAsync($"{GetName<T>()}/{id}{queryString}")
.ConfigureAwait(false);
response.EnsureSuccessStatusCode();
var a = await response.Content.ReadAsAsync<T>();
return response.IsSuccessStatusCode;
}
protected string ToQueryString(NameValueCollection nvc)
{
if (nvc == null || nvc.Count < 1)
return string.Empty;
var array = (from key in nvc.AllKeys
from value in nvc.GetValues(key)
select string.Format("{0}={1}", HttpUtility.UrlEncode(key), HttpUtility.UrlEncode(value)))
.ToArray();
return "?" + string.Join("&", array);
}
【问题讨论】:
-
当它起作用时,你得到 200 还是 204?
-
@SeanO'Neil 我得到 204
-
所以响应 204 是完全正常的,即使它没有删除任何内容。至于为什么它不删除你必须看看服务器在做什么。
标签: c# asp.net asp.net-web-api