将内容传递给 deleteasync
passing content to a deleteasync
我有一个 Web api HttpDelete 控制器方法,它接受一个 id 数组作为参数。我想知道如何将一组 ID 传递给该方法。
我试图传递类似于 putasync 和 postasync 的 id,我可以在其中 jsonify id。 DeleteAsync,似乎不接受类似于其他网络 api 功能的 json 内容。下面是我的 HttpDelete 控制器方法:
[HttpDelete]
[Route("delete")]
public HttpResponseMessage DeleteUsers(int[] ids)
{
if (ids != null)
{
...Do stuff
}
throw error;
}
我试图通过以下方式获得此方法:
var Ids = new[] { 1,2,3 };
string jsonString = JsonConvert.SerializeObject(Ids);
var content = new StringContent(jsonString, Encoding.UTF8, _mediaType);
response = HttpClient.DeleteAsync(endpoint,content).Result;
那么如何将多个 ID 作为数组传递给此方法?
有什么想法吗?
谢谢
HttpClient.DeleteAsync 似乎没有提供传递数据的重载。为什么不使用具有属性定义路由的 POST 方法,将数组发送到该方法,并在该特定 POST 方法内部执行删除逻辑?
大概是这样的:
[Route("api/controller/deleteObjects")]
[HttpPost]
public async Task DeleteObjects([FromBody]IEnumerable<int> ids)
{
// whatever mechanism you're using to delete
}
[Route("api/APIController/delete")]
[HttpDelete]
public async Task DeleteObjects([FromUri]int[] ids)
{
// whatever you want to do
}
您可以从 uri 发送 id 等参数。它对我有用。
var Ids = new[] { 1,2,3 };
$.ajax({
method:'DELETE',
url: "/api/APIController/delete",
params: {
ids : Ids,
},
//additions if you need
success: function(response) {
},
error: function(xhr) {
}
});
VS2012 中的 DeleteAsync 似乎不允许发送 HttpContent,但 VS2013 允许。 See MSDN page here
所以我安装了 VS2013,然后在我的 VS2012 项目中添加了对 Microsoft.VisualStudio.Services.WebApi 的引用。
我现在可以将 DeleteAsync 与 HttpContent 一起使用。
我有一个 Web api HttpDelete 控制器方法,它接受一个 id 数组作为参数。我想知道如何将一组 ID 传递给该方法。
我试图传递类似于 putasync 和 postasync 的 id,我可以在其中 jsonify id。 DeleteAsync,似乎不接受类似于其他网络 api 功能的 json 内容。下面是我的 HttpDelete 控制器方法:
[HttpDelete]
[Route("delete")]
public HttpResponseMessage DeleteUsers(int[] ids)
{
if (ids != null)
{
...Do stuff
}
throw error;
}
我试图通过以下方式获得此方法:
var Ids = new[] { 1,2,3 };
string jsonString = JsonConvert.SerializeObject(Ids);
var content = new StringContent(jsonString, Encoding.UTF8, _mediaType);
response = HttpClient.DeleteAsync(endpoint,content).Result;
那么如何将多个 ID 作为数组传递给此方法?
有什么想法吗?
谢谢
HttpClient.DeleteAsync 似乎没有提供传递数据的重载。为什么不使用具有属性定义路由的 POST 方法,将数组发送到该方法,并在该特定 POST 方法内部执行删除逻辑?
大概是这样的:
[Route("api/controller/deleteObjects")]
[HttpPost]
public async Task DeleteObjects([FromBody]IEnumerable<int> ids)
{
// whatever mechanism you're using to delete
}
[Route("api/APIController/delete")]
[HttpDelete]
public async Task DeleteObjects([FromUri]int[] ids)
{
// whatever you want to do
}
您可以从 uri 发送 id 等参数。它对我有用。
var Ids = new[] { 1,2,3 };
$.ajax({
method:'DELETE',
url: "/api/APIController/delete",
params: {
ids : Ids,
},
//additions if you need
success: function(response) {
},
error: function(xhr) {
}
});
VS2012 中的 DeleteAsync 似乎不允许发送 HttpContent,但 VS2013 允许。 See MSDN page here
所以我安装了 VS2013,然后在我的 VS2012 项目中添加了对 Microsoft.VisualStudio.Services.WebApi 的引用。
我现在可以将 DeleteAsync 与 HttpContent 一起使用。