我有一个带有DELETE方法的WebAPI控制器,看起来像这样
public bool Delete([FromBody] List<int> stepIds)
我已经设置了我的$资源
api.mySteps = {delete: $resource('my_URL_Here/api/myController?stepIds=:stepIds,{},{delete:{method:'DELETE', hasBody: true}}) };
在我的删除按钮上点击UI,我这样做:
api.mySteps.delete.delete({'stepIds':[1,2,3]},
function(res){},
function(err){}
);
使用此设置,我在WebApi Controller中获取NULL。
在浏览器控制台的“网络”标签中,我看到了:
http://my_URL_Here/api/myController?stepIds=1,2,3
它不是作为数组传入的。
如果我这样做,请给小提琴手
http://my_URL_Here/api/myController?stepIds=[1,2,3]
然后就可以了。
如何将数组传递给DELETE?
答案 0 :(得分:0)
您需要将其指定为$ resource: 例如
'delete': {method: 'DELETE', isArray: true}
这是另一个例子:
var deleteRequest = $resource('/api/delete/post', {}, {
'delete': {method: 'DELETE'}
});
deleteRequest.delete({'ids[]':[4,5,6]});
然后删除请求网址:
/api/delete/post?ids%5B%5D=1&ids%5B%5D=2&ids%5B%5D=3
you get %5B%5D instead of []
如果你期望返回数组而不是对象,那么你应该使用
'delete': {method: 'DELETE', isArray: true}
从查看你的代码中你缺少方括号,所以这应该解决它:
api.mySteps.delete.delete({'stepIds[]':[1,2,3]},
function(res){},
function(err){}
);