根据REST原则,我知道服务器的所有POST都应该用于创建资源;修改服务器上的内容。如果您想获取信息,请使用GET。
但是,您需要发送大量信息以获取资源的情况呢?
例如,复杂的搜索参数对于URL来说太长了。或者,假设您想要发送要搜索的图像,例如OCR或类似的图像比较。
在这些情况下,似乎有必要将数据POST到服务器,但结果不会是变化,只是信息。 POST图像,接收服务器上存在的类似图像列表。
我不想构建违反这些原则的REST API,除非它们实际上不是违规行为。
修改
到目前为止,似乎所有答案都是正确的(!):Sergio和Kay对于在需要时“弯曲规则”的实际价值是正确的。但uriDium有一个好点:
图片上传实际会导致服务器发生变化:有一个新文件,虽然是暂时的。同样可以将复杂的搜索视为“文档”。
我想我们可以考虑“短暂的”变化的概念,“短暂的POST”,其中服务器被更改并产生新的短暂资源。在这种情况下,对于RESTful考虑因素,可能会出现以下行为:
我会考虑用第2步的完整短暂资源作出回应并在那里结束互动,只是为了反叛: - )
答案 0 :(得分:5)
当技术约束时(例如,使用HTTP get和max64查询字符串,基本编码限制为2048)阻碍您添加业务价值(需要是能够在您的服务中比较或搜索图像)由于架构方法(RESTful webservice)我会说你可以打破一些你想要坚持的规则或原则。
最重要的是,您的客户可以合理地猜测 您的API行为。使用POST而不创建资源的图像搜索等例外情况可以明确记录,以便他们了解。
答案 1 :(得分:4)
例如,如果您要为搜索提交参数,则可以使用POST在服务器上创建新的搜索请求。然后使用您在服务器上创建的搜索参数对象中的ID完成GET。这与RESTful方法一致