我是 restful 服务的新手,愿意从专家那里得到一些想法。
将访问我的服务的应用程序有一个 datatable-grid
(网格的每一行代表一个员工对象/实体),用户可以一次删除超过 1 条记录(基于关于用户选择的复选框的数量)。在此类删除操作中,URL 表示将如何表示以及数据将如何发送到服务?
我的想法
由于删除的行数不同(基于用户选择的复选框的数量),因此我选择查询字符串,下面是 URL 表示形式,我可以使用它来获取服务中的数据:
/deleteEmployees?id=1,2,3
即id 的逗号分隔值,它将唯一标识表中的记录。
根据我的想法,我有几个问题:
1) 上面提到的查询字符串包含逗号分隔
值(即Id)。查询字符串将包含此类值的有效 URL 吗?
2) 定义 URL 的查询字符串是否有任何限制(就像我使用 csv 的方式)?
3) 是否还有其他更好、更高效的方式来实现同样的目标?
附言我对此并不陌生,因此正在寻找专家的不同想法,并尝试了解什么是正确的,什么是错误的。
最佳答案
用逗号分隔的员工 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
另一种方法是向 /employees
之类的 URL 发送一个 HTTP DELETE 请求,保留建议的 REST 资源标识并使用 HTTP 方法。您将在 HTTP header 中传递 ID 列表。
DELETE /employees HTTP/1.1
Employees-To-Delete: 1,2,3
看看this answer用于 URL 中的字符限制。
关于java - 在 JAX-RS Service jersey 实现中删除多个资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16737573/