【发布时间】:2019-09-05 14:13:42
【问题描述】:
我正在尝试使 HttpDelete 请求具有多个参数。我不能使用正文,也不想使用 HttpPost。
这是我的行动:
[HttpDelete("{ids}")]
public async Task Delete(int[] ids)
{
foreach(int id in ids)
await _repository.DeleteLogAsync(id);
}
这是我用于发送请求的代码:
public async Task DeleteLogs(int[] ids)
{
var queryString = HttpUtility.ParseQueryString(string.Empty);
foreach (var id in ids)
{
queryString.Add("id", id.ToString());
}
var url = _configuration["BaseUrl"] + _configuration["Endpoint"] + "/" + queryString.ToString();
using (var httpClient = new HttpClient())
{
var response = await httpClient.DeleteAsync(url);
response.EnsureSuccessStatusCode();
}
}
我也使用 Swagger,它向我展示了以下内容:
如果我尝试完全按照上面显示的方式发送请求,我会收到 415 响应。我还觉得奇怪的是 swagger 需要两个参数,一个在正文中,一个在查询中。
所以我尝试在我的操作中使用[FromQuery]。在这种情况下,请求通过,但 int 数组在我的操作中为空。所以我有点卡住了,不知道如何继续。根据this 的回答,它应该可以工作。
谁能告诉我我做错了什么?
【问题讨论】:
-
对 c# 代码使用嗅探器并与招摇的结果进行比较。查看标头,看看 c# 标头是否匹配 swagger。
标签: c# parameters httpclient asp.net-core-2.2 http-delete