我有一种情况,用户可以选择带有要删除的复选框的特定实体。当用户选择特定实体时,它的 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集合??]。
到目前为止,关于删除集合,我所知道的是,网址应采用 '/myURL/batch?id=1&id=2&id=3'
的形式,如果我错了,请纠正我。这里的问题是,如果我想删除一批 20 个 id,那么将所有 id 放在同一个 url 中是没有任何意义的。
所以我的问题是最好的方法是什么以及如何使用 angularjs $http.delete 删除集合资源?
最佳答案
首先,发送 ids 列表是使用 REST API 删除的好方法
其次,你不应该在url中传递id(出于安全原因),更好的方法是在请求正文中发送json,其中包含你想要发送的数据(对于PUT和POST也是如此)
第三,如果你的代码总是发送 json(可以通过创建以相同方式向你的 api 发送 http 请求的服务来强制),你后端的方法应该接收 json 而不是字符串,并且请求的解析(deserlize)不应该发生在该方法上。
关于javascript - 如何使用 REST api 删除带有 angularjs 的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32297866/