哪个 REST 命令用于从有效负载接收数据、对其进行操作并返回结果?

Which REST command to use for receiving data from payload, manipulating it, and returning the result?

我对 REST 之类的东西真的很陌生。 我想创建一个小型服务(使用 Java Spring - 对我来说也是新的),它应该以几种不同的方式调整图像的大小。目前,我不知道应该为此使用哪个 REST 命令。

这就是我想象中的 API 工作方式:

  1. 我发送包含以下信息的请求:
  1. 服务器 returns 新调整大小的图像

我无法理解应该使用哪个 REST 命令(我能找到的所有信息都是关于在服务器上存储数据的)。

我不想存储任何图像或 return 任何已存储的图像。我只想处理请求中的图像并 return 它。

如果您需要更多信息,请告诉我。

I don't want to store any images or return any stored images. I just want to manipulate the image from the request and return it.

HTTP 今天没有很好的答案。

HTTP is an application protocol, whose application domain is the transfer of documents over a network -- Webber, 2011

HTTP 服务器的语义与文档存储的语义非常相似 - 我们请求文档副本 (GET),或者我们请求编辑服务器的文档副本 (POST ,放置,补丁,删除....).

registered HTTP methods 中,不适合带有负载的有效只读请求。

您可以选择以下选项之一

  • 您可以将标准方法以非标准方式使用,后果自负
  • 您可以使用非标准方法
  • 您可以定义一种新方法,register it,完成标准化流程并推动采用
  • 您可以使用 POST.

POST serves many useful purposes in HTTP, including the general purpose of “this action isn’t worth standardizing.” -- Fielding, 2009


I am having trouble understanding how I can put an image and other information in a single payload (maybe as bytes?)

考虑如何在万维网上实现这一目标。

您可能有一个 HTML 表单,其中包含允许操作员指定要使用的文件的输入控件 (type="file"),以及用于收集其他感兴趣信息的附加输入控件。表单的描述可能包括预加载到输入控件中的默认值或选项列表等。当用户提交表单时,Web 浏览器对标准化 HTML 表单处理的实现将应用于输入,生成内容类型为 multipart/form-data.

的 HTTP POST 请求

它在外观上与带有一个或多个附件的电子邮件非常相似。

在原始服务器上,有效载荷被解包——实际上是将表单输入转换为它们的分离表示。


在这种情况下,POST 的缺点是它不会向通用组件传达您处理此请求的事实 idempotent。因此,当网络丢失消息时,我们不会得到“自动重试请求”。

此外,通用组件将无法有效地缓存响应,因为它们没有将请求负载作为缓存键的一部分的标准化方法。

简而言之,POST 是标准化方法所能达到的最佳效果。