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

标签 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集合??]。

到目前为止,关于删除集合,我所知道的是,网址应采用 '/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/

相关文章:

javascript - Highcharts 试图隐藏/显示系列

java - 如何避免创建新的 ObjectMapper 实例,每个来自外部系统的类型响应都被 Jackson 接收和解析?

javascript - Angular,如何知道服务何时完成

javascript - redux 中不止一个状态属性更改

javascript - 在保留宽度的同时将最大高度应用于图像

javascript - 使用数组、计数和索引实现堆栈

java - Badass 运行时 suggestModules NPE 问题

java - 即使没有 protected ,类如何访问其父类(super class)变量?

angularjs - 如果创建隐藏,Kendo UI 图表在显示时不会使用整个可用空间

javascript - 如果在 Angular 中不使用 $scope,如何使用 $apply() ?