如何使用REST api删除带有angularjs的集合?

时间:2015-08-30 14:57:08

标签: javascript java angularjs rest batch-file

我有一个案例,用户可以选择要删除的复选框的特定实体。当用户选择特定实体时,它的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删除收集资源?

2 个答案:

答案 0 :(得分:0)

首先,发送id列表是使用rest api

删除的好方法

其次,你不应该在url中传递id(出于安全原因),更好的方法是在请求的主体内发送json,其中包含你要发送的数据(对于PUT也是如此)和POST)

第三,如果你的代码总是发送json(可以通过创建以同样的方式向你的api发送http请求的服务来强制)你后端的方法应该接收json而不是字符串也请求解析(deserlize)不应该在方法上发生。

答案 1 :(得分:0)

好的,答案比我想象的要简单得多。我所要做的就是用数据改变参数:

{params: [batchIds collection here??]} 

进入这个

{data: batchIds}

现在,您可以删除批量的ID或任何您想要的内容,只要您反序列化后端的数据。