【发布时间】:2013-05-20 05:00:30
【问题描述】:
我是 restful 服务的新手,愿意从专家那里得到一些想法。
将访问我的服务的应用程序有一个datatable-grid(网格的每一行代表一个员工对象/实体),用户可以一次删除多个记录(基于选中的复选框的数量用户)。在这种删除操作中,URL 将如何表示以及数据将如何发送到服务?
我的想法
由于删除的行数不同(基于用户选择的复选框数),因此我选择查询字符串,下面将是 URL 表示,我可以使用它在我的服务中获取数据:
/deleteEmployees?id=1,2,3
即id 的逗号分隔值,它将唯一标识表中的记录。
基于我的想法,我有几个问题:
1) 上面提到的查询字符串包含 comma-seperated 值(即 Ids)。它是查询字符串将包含此类值的有效 URL 吗?
2) 定义 URL 的查询字符串是否有任何限制(就像我使用 csv 所做的那样)?
3) 以更好和更有效的方式实现相同目标的任何其他替代方案?
附:我对此很陌生,因此从专家那里寻找不同的想法,并尝试了解什么是正确的,什么不是。
【问题讨论】:
-
我不认为 REST 真的喜欢一次删除资源的整个元素子集。如果您必须这样做,那么 CSV 在 url 中就可以了。您还可以将 CSV 作为 HTTP 请求中的自定义标头值。有关限制,请参阅here。相反,我会遍历复选框选择并在
/employee/{id}上发出 DELETE HTTP 请求 -
感谢您的回复。您选择循环遍历它也很好。但是,这不是像一次调用服务调用 n 次而不是一次调用一样吗?请对此发表评论。
-
就是这样。它可能更像 REST,因为您正在使用 HTTP 方法(例如:DELETE)而不是像
/deleteEmployees这样的操作与资源交互 -
REST的 wiki 文章描述了如何访问资源。否则,您可以阅读整个REST Thesis。这只是我在使用 RESTful 架构时的一种感觉。 -
带有标题的选项可能会更好。如果您在
/employees访问整个Employee资源集,则可以发送带有Employees-To-Delete: 1,2,3之类的标头的DELETE HTTP 请求。对我来说,这似乎更像 REST。
标签: java web-services rest web-applications jersey