1

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

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

我的想法

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

/deleteEmployees?id=1,2,3

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

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

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

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

3)以更好和有效的方式实现相同目标的任何其他选择?

PS我对此很陌生,因此从专家那里寻找不同的想法,并尝试了解什么是正确的,什么不是。

4

1 回答 1

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 请求发送到类似的 URL /employees,保留建议的资源 REST 标识并使用 HTTP 方法。您将在 HTTP 标头中传递 id 列表。

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

查看此答案以了解 URL 中的字符限制。

于 2013-05-24T15:45:57.923 回答