【发布时间】:2014-01-31 05:58:50
【问题描述】:
根据 REST 原则,我理解到服务器的所有 POST 都应该用于创建资源;修改服务器上的某些内容。如果要获取信息,请使用 GET。
但是对于需要发送大量信息来获取资源的情况呢?
例如,对于 URL 来说太长的复杂搜索参数。或者,假设您想发送要搜索的图像,例如 OCR 或类似的图像比较。
在这些情况下,似乎需要将数据POST到服务器,但结果不会是变化,只是信息。 POST 一张图片,接收服务器上存在的相似图片列表。
我不想构建违反这些原则的 REST API,除非它们实际上不违反。
编辑
到目前为止,似乎所有答案都是正确的(!):Sergio 和 Kay 关于在需要时“改变规则”的实际价值是正确的。但是 uriDium 有一个好处:
上传图片实际上会导致服务器发生变化:有一个新文件,虽然是临时的。可以将复杂的搜索视为“文档”。
我想我们可以考虑“临时”更改的概念,“临时 POST”,其中服务器发生更改并产生新的临时资源。在这种情况下,出于 RESTful 的考虑,这可能是以下行为:
- 客户端:发布一个临时资源
- 服务器:使用临时资源 URI 和 TTL 标头 (?) 进行响应。使用资源 URI 以外的内容进行响应会让人不安——对吧?
- 客户端:在 TTL 时间内获取临时资源
- 服务器在 TTL 后删除资源
我会考虑在步骤 2 中使用完整的临时资源进行响应并在那里结束交互,只是为了反抗:-)
【问题讨论】:
-
“有些规则可以弯曲,有些可以打破”。
-
这不像是某个地方有一个 REST 委员会,会说“不,你不应该在这里发帖。我们不允许你的应用程序上市”。运用你的常识。
-
(顺便说一句,这是对“矩阵”的引用):)
标签: rest methods principles