RESTful处理函数/资源:使用GET还是POST?

5
我正在创建一个RESTful web服务,其中一些资源是计算或处理函数。例如,用户可以通过API提交图像并接收缩放或转换后的图像。
根据《RESTful Web Services Cookbook》第2.5节的建议,我应该使用GET方法:
Treat the processing function as a resource, and use HTTP GET to fetch a
representation containing the output of the processing function. Use query
parameters to supply inputs to the processing function.

当输入简单时(例如点的经纬度坐标),这是清晰明了的。然而,对于像图像这样的大型输入,我应该遵循相同的建议吗?据我所知,不可能将这么多数据作为查询参数发送。

4个回答

6
使用POST方法。实际上,您正在服务器上进行图像上传和处理。除非图像已经存储在服务器上,否则无法想到其他方法来完成此操作。

这里的重要概念是:“图像已经存储在服务器上。” 无论是使用PUT还是POST将其放置到那里都是一个不同的问题。 (参考:https://dev59.com/HHRB5IYBdhLWcg3wa2q2) - kdbanman

1

图片是一种资源。使用PUT将资源放置在服务器上,然后GET该资源,提供指示所需大小的参数。


哇,这真是令人深思的! - sivabudh
1
如果只有客户端提交图像ID作为请求的一部分,请使用PUT。如果服务器生成图像ID并在成功时返回它们,请使用POST。请Google“REST幂等性”,或参见 这个问题 - kdbanman
如果我们关心存储,那么我们就不能保存数据,这时进行PUT请求也没有意义。 - cammil

0

由于HTTP协议的限制,我建议不要这样做。这是一个非常有效的、可行的例外情况,应该违反这个规则。


在目前的形式下,这个答案不应该被接受。请继续阅读,亲爱的谷歌用户。 - kdbanman

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接