您可以发出有效的 HTTP 请求,但违背了 HTTP 的设计。我的答案集中在正确的 HTTP 设计上。
首先,当您执行 GET 请求时,您总是会收到资源的表示。即使 URL 表示类似“资源集合”之类的东西,HTTP 中也没有对此的严格定义。该资源列表仍然可以代表来自您的数据模型的多个“实体”。
所以调用/users
可以返回多个用户实体。
同样,DELETE
对用户的 a 可能意味着您正在删除整个/users
集合及其中的所有内容。
我看到但没有很好答案的一个问题是您正在使用查询字符串来删除多个资源。我认为这对GET
/很好HEAD
,但我质疑它是否也DELETE
适用。这对我来说肯定感觉有点“奇怪”,因为我觉得应该删除一个DELETE
on并且通常它会由于大多数框架的工作方式。应该是?我其实不确定。REST 不是严格的标准,所以我们不能去那里找到答案,所以我得到的只是它“感觉不对”。我意识到您并没有严格要求 REST,所以从严格的 HTTP 角度来看,这绝对没问题。/users?foo=bar
/users
但是,您可以将您的 url 构造成如下所示:
/users?id[]=12&id[]=4&id[]=65
而是这样的:
/users/12,4,65
我见过其他人这样做,对我来说感觉有点不对劲。但这主要是猜想。
无论您是否DELETE
对多个这样的实体执行操作,请求都应该成功或根本不执行任何操作。不接受部分成功,因此您可以使用通常的 200/204 响应代码来指示成功删除。