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

标签 java web-services rest web-applications jersey

我是 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/

相关文章:

c# - 负载测试 Web 服务

php - WSDL 中不存在 NuSoap 操作

asp.net - 在 .ashx 文件中接收 POST 数据

java - REST:告诉客户端仅发送 csv 和文本格式

java - 访问rest-api方法getAll时获取数据失败

Java gRPC 服务器用于长生命周期流的有效实现

java - SSL 处理因 netty-all-5.0.0.Alpha2 失败,但正在使用 netty-all-5.0.0.Alpha1

java - 多模块项目 : reuse static method between test classes from different modules

java - 为什么我的 JFrame 不显示任何内容?

php - 构建高度可扩展的 Web 服务