2016-07-28 59 views
0

正如标题所说 - 它有效吗?Http一次获取并删除多个实体请求(PHP)

做我的意思

如果我打电话与端点GET 是有效的,然后做

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

让服务器返回多个实体一次?

我在rfc文档中看不到任何提示。另外 - 查看状态代码返回 - 它似乎不是这样构建的。

所以我想只有一个实体的GET或DELETE或HEAD请求?

编辑:语言是PHP的BTW

EDIT2:这是我想避免:https://stackoverflow.com/a/18141127/3411766

我不想使用身体。

+0

您的请求将如何知道返回哪种类型的响应,以及为什么要这样做? –

+0

好吧,很明显,要使用单个调用返回多个实体。 – cottton

回答

1

您可以制作有效的HTTP请求,但违背HTTP的设计。我正在关注正确的HTTP设计。

首先,当您执行GET请求时,您始终会收到资源的表示形式。即使URL表示类似“资源集合”的东西,HTTP中也没有严格的定义。该资源列表仍然可以代表来自您的数据模型的多个“实体”。

因此,致电/users可以返回多个用户实体。

同样,对用户的DELETE可能表示您将删除整个/users集合及其中的所有内容。

我看到的一个问题,并没有一个很好的答案是您正在使用查询字符串来删除多个资源。我认为这是好的GET/HEAD,但我质疑它是否正确DELETE以及。这对我来说肯定感觉有点“奇怪”,因为我觉得DELETE/users?foo=bar应该删除/users,并且通常会由于大多数框架的工作原因。应该是?我其实不确定。 REST并不是严格的标准,所以我们无法去那里找到答案,所以我得到的只是它感觉错了。我意识到你并不严格要求REST,所以从严格的HTTP角度来看,它绝对没问题。

但是,你可以组织你的网址并非像:

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

,而是这样的事情:

/users/12,4,65 

我看到别人这样做,而且感觉有点少对我错了。但这主要是猜测。

不管如果你对这样的多个实体做DELETE,请求应该成功或者什么也不做。不接受部分成功,所以您可以使用通常的200/204响应代码来表示成功删除。