Javascript 如何使用RESTAPI使用angularjs删除集合?
我有一个案例,用户可以通过复选框选择要删除的特定实体。当用户选择特定实体时,其id将添加到特定数组中。例如,如果我选择第一、第二和第四个实体,它们的id将是:Javascript 如何使用RESTAPI使用angularjs删除集合?,javascript,java,angularjs,rest,batch-file,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){
[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);
}
}
我会将这些数据传递到后端服务。它使用以下方法:
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);
}
}
@组件
@路径(“/实体”)
@生成(“应用程序/json”)
公共类FinanceEntityServiceImpl实现FinanceEntityService{
@删除
公共void MassDeleteEntitysById(字符串batchId){
System.out.println(“批次ID:+batchID”);
List idList=GsonProcessing.deserializeIdsList(batchIds);
financeDao.massDelete(idList);
}
}
当我运行上述代码时
我一直在网上安静地搜索如何使用angularjs$http删除集合资源,但还没有找到
我也不确定是否能够将fresh collection作为参数放入$http.delete
,其中显示[batchIds collection here??]
到目前为止,关于删除集合,我所知道的是url的形式应该是”/myURL/batch?id=1&id=2&id=3'
,如果我错了,请纠正我。这里的问题是,如果我想删除一批20个id,将所有id放在同一个url中没有任何意义
所以我的问题是什么是最好的方法,以及如何使用angularjs$http.delete删除集合资源?首先,使用RESTAPI发送ID列表是一种很好的删除方法 其次,您不应该在url中传递ID(出于安全原因),更好的方法是在包含您想要发送的数据的请求体中发送json(PUT和POST也是如此)
第三,如果您的代码总是发送json(可以通过创建以相同方式向api发送http请求的服务来强制),那么后端的方法应该接收json而不是字符串,并且请求的解析(反序列化)不应该在方法上发生。首先,发送ID列表是使用RESTAPI删除的好方法 其次,您不应该在url中传递ID(出于安全原因),更好的方法是在包含您想要发送的数据的请求体中发送json(PUT和POST也是如此)
第三,如果您的代码总是发送json(可以通过创建以相同方式向api发送http请求的服务来强制),那么后端的方法应该接收json,而不是字符串。请求的解析(反序列化)也不应该发生在方法上。好的,答案比我想象的简单得多。我所要做的就是用数据更改参数:
{params: [batchIds collection here??]}
进入这个
{data: batchIds}
现在,只要在后端反序列化数据,就可以删除一批ID或任何需要的内容。好的,答案比我想象的简单得多。我所要做的就是用数据更改参数:
{params: [batchIds collection here??]}
进入这个
{data: batchIds}
现在,只要在后端对数据进行反序列化,就可以删除批量ID或任何需要的内容。这对您有帮助吗?你将不得不用delete替换get。你可以看看我的帖子,我想它可能会帮助你:这对你有帮助吗?你将不得不用delete替换get。你可以看看我的帖子,我想它可能会对你有所帮助:谢谢Oren。我所做的是,当我使用JSON作为字符串时,我将在后端使用Gson对其进行反序列化。我已经做了具体的方法来反序列化它。我将尝试在请求体中添加json,并相应地添加注释。如果是https,那么在url中发送ID就不存在安全问题。REST使用动词(删除表示删除)。如果要在正文中发送数据,则不能使用delete动词。那么这就不会是平静的。您如何决定使用删除动词,以及何时在正文中使用带有ID的post/put动词?谢谢Oren。我所做的是,当我使用JSON作为字符串时,我将在后端使用Gson对其进行反序列化。我已经做了具体的方法来反序列化它。我将尝试在请求体中添加json,并相应地添加注释。如果是https,那么在url中发送ID就不存在安全问题。REST使用动词(删除表示删除)。如果要在正文中发送数据,则不能使用delete动词。那么这就不会是平静的。您如何决定使用删除动词,以及何时在正文中使用带有ID的post/put动词?