根据 REST 原则,我理解到服务器的所有 POST 都应该用于创建资源;修改服务器上的某些内容。如果要获取信息,请使用 GET。
但是对于需要发送大量信息来获取资源的情况呢?
例如,对于 URL 来说太长的复杂搜索参数。或者,假设您想发送要搜索的图像,例如 OCR 或类似的图像比较。
在这些情况下,似乎有必要将数据发布到服务器,但结果不会是变化,只是信息。发布图像,接收服务器上存在的相似图像列表。
我不想构建违反这些原则的 REST API,除非它们实际上并不违反。
编辑
到目前为止,似乎所有答案都是正确的(!):Sergio 和 Kay 关于在需要时“改变规则”的实际价值是正确的。但是 uriDium 有一个好处:
图片上传实际上会导致服务器发生变化:有一个新文件,尽管是临时的。可以将复杂的搜索视为“文档”。
我想我们可以考虑“临时”更改的概念,“临时 POST”,其中服务器发生更改并产生新的临时资源。在这种情况下,出于 RESTful 的考虑,这可能是以下行为:
- 客户端:发布一个临时资源
- 服务器:使用临时资源 URI 和 TTL 标头 (?) 进行响应。用资源 URI 以外的东西进行响应是不安的——对吗?
- 客户端:在 TTL 时间内获取临时资源
- 服务器在 TTL 后删除资源
我会考虑在步骤 2 中使用完整的临时资源进行响应并在那里结束交互,只是为了叛逆:-)