一次 Http GET 和 DELETE 多个实体请求 (PHP)

Http GET and DELETE multiple entity requests at once (PHP)

正如标题所说 - 它有效吗?

什么意思

如果我使用 GET 调用端点 那么

是否有效

http://some.thing/more?id[]=12&id[]=4&id[]=65

让服务器一次 return 多个实体?

我在 rfc 文档中看不到任何注释。另外 - 查看 return 的状态代码 - 它似乎不是那样构建的。

所以我猜 GET 或 DELETE 或 HEAD 请求仅针对一个实体?

编辑:语言是 PHP 顺便说一句

EDIT2:这是我想避免的:

我不想使用 body。

您可以发出有效的 HTTP 请求,但违背了 HTTP 的设计。我的回答重点是正确的 HTTP 设计。

首先,当您执行 GET 请求时,您总是会收到资源的表示形式。即使 URL 代表类似 'collection of resources' 的东西,HTTP 中也没有对此的严格定义。该资源列表仍然可以表示来自您的数据模型的多个 'entities'。

因此调用 /users 可以 return 多个用户实体。

同样,对用户的 DELETE 可能意味着您要删除整个 /users 集合及其中的所有内容。

我看到的一个问题没有很好的答案是您正在使用查询字符串删除多个资源。我认为这适用于 GET / HEAD,但我怀疑它是否也适用于 DELETE。对我来说肯定有点 'weird' 因为我觉得 /users?foo=bar 上的 DELETE 应该删除 /users 并且通常会由于大多数框架的工作方式而导致。应该是?我其实不确定。 REST 并不是一个严格的标准,所以我们无法在那里找到答案,所以我得到的只是它 'feels wrong'。我知道您并没有严格要求 REST,所以从严格的 HTTP 角度来看,这绝对没问题。

但是,您可以将您的网址构造成不像:

/users?id[]=12&id[]=4&id[]=65

而是这样的:

/users/12,4,65

我见过其他人这样做,我觉得不太对劲。但这主要是推测。

无论您是否对多个实体执行 DELETE 这样的操作,请求都应该成功或根本不执行任何操作。不接受部分成功,因此您可以使用通常的 200/204 响应代码表示删除成功。