C# 具有多个参数的HttpClient.DeleteAsync
我正在尝试使HttpDelete请求具有多个参数。我不能使用body,也不想使用HttpPost 这是我的行动:C# 具有多个参数的HttpClient.DeleteAsync,c#,parameters,httpclient,asp.net-core-2.2,http-delete,C#,Parameters,Httpclient,Asp.net Core 2.2,Http Delete,我正在尝试使HttpDelete请求具有多个参数。我不能使用body,也不想使用HttpPost 这是我的行动: [HttpDelete("{ids}")] public async Task Delete(int[] ids) { foreach(int id in ids) await _repository.DeleteLogAsync(id); } 这是我用来发送请求的代码: public async Task DeleteLogs(int[
[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();
}
}
我还使用了招摇过市,它向我展示了以下内容:
如果我尝试完全按照上面所示发送请求,我会得到415响应。我还发现,swagger需要两个参数,一个在body中,一个在查询中,这很奇怪
所以我尝试在我的操作中使用[FromQuery]。在本例中,请求通过,但在我的操作中int数组为空。所以我有点被卡住了,不知道如何继续。根据答案,它应该是有效的
有人能告诉我我做错了什么吗?从操作中删除路由模板,并用[FromQuery]修饰参数 在客户端上,使用正确的参数名构造查询字符串
static readonly Lazy<HttpClient> httpClient = new Lazy<HttpClient>();
public async Task DeleteLogs(int[] ids) {
var queryString = new QueryString(string.Empty);
foreach (var id in ids) {
queryString.Add("ids", id.ToString());
}
var url = _configuration["BaseUrl"] + _configuration["Endpoint"] + "/" + queryString.ToString();
var response = await httpClient.Value.DeleteAsync(url);
response.EnsureSuccessStatusCode();
}
对c代码使用嗅探器,并与招摇过市的结果进行比较。查看标题,看看c标题是否与swagger匹配。
static readonly Lazy<HttpClient> httpClient = new Lazy<HttpClient>();
public async Task DeleteLogs(int[] ids) {
var queryString = new QueryString(string.Empty);
foreach (var id in ids) {
queryString.Add("ids", id.ToString());
}
var url = _configuration["BaseUrl"] + _configuration["Endpoint"] + "/" + queryString.ToString();
var response = await httpClient.Value.DeleteAsync(url);
response.EnsureSuccessStatusCode();
}