删除JAX-RS Service jersey实现中的多个资源

时间:2013-05-24 14:38:38

标签: java web-services rest web-applications jersey

我是新来的宁静服务,并愿意从专家那里得到一些想法。

将访问我的服务的应用程序是datatable-grid(网格的每一行代表一个员工对象/实体),用户可以一次删除多个记录(基于复选框的数量)由用户选择)。在这种类型的删除操作中,URL表示将如何以及如何将数据发送到服务?

我的想法

由于删除的行数不同(基于用户选择的复选框的数量),因此我选择查询字符串,下面将是URL表示,使用该URL表示我可以在我的服务中获取数据:

/deleteEmployees?id=1,2,3

即。一个逗号分隔的id值,它将唯一地标识表中的记录。

根据我的想法,我有几个问题:

1)上面提到的查询字符串包含comma-seperated个值(即Ids)。它是一个有效的URL,查询字符串将包含这种值吗?

2)定义URL的查询字符串是否有任何限制(就像我使用csv一样)?

3)以更好,更有效的方式实现同​​样的任何其他选择吗?

P.S。我是新手,因此寻找专家的不同想法,并试图了解什么是正确的,什么是不正确的。

1 个答案:

答案 0 :(得分:3)

以逗号分隔的Employee ID列表是一种很好的方法,但我不会把它放在带有动作的URL中,即。 /deleteEmployees?id=1,2,3。 REST更多的是在URL中识别资源而不是动作。我要遍历每个员工ID以删除并发送每个

的HTTP DELETE请求
DELETE /employees/1 HTTP/1.1
DELETE /employees/2 HTTP/1.1
DELETE /employees/3 HTTP/1.1

另一种方法是将一个HTTP DELETE请求发送到/employees之类的URL,保留建议的REST资源标识并使用HTTP方法。您可以在HTTP标头中传递ID列表。

DELETE /employees HTTP/1.1
Employees-To-Delete: 1,2,3

请查看this answer以了解网址中的字符数限制。