我有一个案例,用户可以选择要删除的复选框的特定实体。当用户选择特定实体时,它的id被添加到特定数组。例如,如果我选择第一,第二和第四实体,他们的id将是:
[0, 1, 3]
在前端服务中,我使用以下方法:
deleteEntities: function(batchIds){
return $http.delete('/finance/entities', {params: [batchIds collection here??]}).success(function(data){
return data;
});
}
我会将此数据传递给后端服务。其中使用以下方法:
@Component
@Path("/entities")
@Produces("application/json")
public class FinanceEntityServiceImpl implements FinanceEntityService {
@DELETE
public void massDeleteEntitiesByIds(String batchIds){
System.out.println("batch ids: " + batchIds);
List<Long> idList = GsonProcessing.deserializeIdsList(batchIds);
financeDao.massDelete(idList);
}
}
当我在代码上面运行时
我一直在搜索网络安静,同时如何使用angularjs $ http删除收集资源,我还没有找到。
我也不确定我是否能够将新的集合作为参数添加到$http.delete
作为[batchIds collection here ??]的参数。
我所知道的关于删除集合的内容是,网址应该是'/myURL/batch?id=1&id=2&id=3'
的形式,如果我错了,请纠正我。这里的问题是,如果我想删除一批20个ID,将所有id放在同一个URL中没有任何意义。
所以我的问题是什么是最好的方法以及如何使用angularjs $ http.delete删除收集资源?
答案 0 :(得分:0)
首先,发送id列表是使用rest api
删除的好方法其次,你不应该在url中传递id(出于安全原因),更好的方法是在请求的主体内发送json,其中包含你要发送的数据(对于PUT也是如此)和POST)
第三,如果你的代码总是发送json(可以通过创建以同样的方式向你的api发送http请求的服务来强制)你后端的方法应该接收json而不是字符串也请求解析(deserlize)不应该在方法上发生。
答案 1 :(得分:0)
好的,答案比我想象的要简单得多。我所要做的就是用数据改变参数:
{params: [batchIds collection here??]}
进入这个
{data: batchIds}
现在,您可以删除批量的ID或任何您想要的内容,只要您反序列化后端的数据。