不涉及数据流的REST服务类型?

REST Service Type if no Data Flow is Involved?

如果我必须使用不涉及我与应用程序之间数据流的服务,最适合使用的调用类型是什么? (GET vs POST vs PATCH vs PUT) 我尝试调用的服务?

然而,后端会对数据存储中的后端数据进行一些修改,然后 POST 将其转至另一个后端。然而,这不是我在调用服务时看到的抽象级别。我只想完成 "process" 而后端服务如何完成它不是 material。

在这种情况下,我如何表示我正在尝试消费的 "service"。 它是 "GET" 服务,因为我正在完成一项服务吗?这一切都非常令人困惑,因为这些动词都是以数据为中心而不是以流程为中心的。

由于您的服务器在后端对数据进行了一些操作,我认为您应该使用 PATCH 并且服务应该 return 代码 204 No Content.

很明显,您需要使用 PUTPATCH。但是有什么区别呢?

PUT 和PATCH 请求之间的区别体现在服务器处理封闭实体以修改由Request-URI 标识的资源的方式。在 PUT 请求中,封闭的实体被认为是原始服务器上存储的资源的修改版本,客户端请求替换存储的版本。

但是,对于 PATCH,封闭的实体包含一组指令,描述应如何修改当前驻留在源服务器上的资源以生成新版本。 PATCH 方法影响 Request-URI 标识的资源,它也可能对其他资源有副作用;即,可以通过应用 PATCH 创建新资源或修改现有资源。

所以我认为 PATCH 更适合您的情况。

REST- 方法的含义非常明确,不取决于您将它发送到哪里以及那里发生了什么。

Get 正在获取一些东西 - 请求一些数据。 POST 用于创建数据,PUT 用于操作现有数据。

如果你真的不知道后端涉及什么,我更喜欢 PUT,因为这对我来说听起来最抽象。

在此处查看定义:

http://www.restapitutorial.com/lessons/httpmethods.html

由于您正在调用一个进程而不是以任何方式真正传输资源的状态,我认为您根本就没有在处理 REST 服务。

既然如此,我认为最合适的HTTP方法就是POSTPATCH 是错误的,因为使用 PATCH 您应该发送一条消息,该消息旨在操纵目标 URI 上的资源。正如你所说,你真的在​​这里处理一个过程,这意味着:

  1. URI 确实没有那么有意义。
  2. 您没有操纵资源。
  3. 你不能保证幂等性。

以下是 HTTP 规范中与此相关的一些片段:

The POST method requests that the target resource process the representation enclosed in the request according to the resource's own specific semantics. For example, POST is used for the following functions (among others):

o Providing a block of data, such as the fields entered into an HTML form, to a data-handling process;