应该使用什么 HTTP 方法类型来重新计算相关资源

What HTTP method type should be used for recalculating the related resources

在我的应用程序中,我维护了几个形状。这些形状是相对于某个参考点计算的。这个参考点被认为是 (0, 0)。例如有人想将这个参考点移动(x, y),那么所有现有Shapes的距离需要用新的参考点重新计算。

我有一个 REST API,用于更改此参考点,因此在内部所有形状距离都使用该 (x, y) 移动重新计算。

这种操作应该使用什么 HTTP 方法 POST、PUT 或 PATCH?由于我在上下文中找不到任何一个正确的方法,如果我按照这些 HTTP 方法的定义进行操作。

What HTTP method should be used for such operation POST, PUT or PATCH? As I don't find any one of these correct in the context, if I go by the definition of these HTTP method.

视情况而定。

当客户端编辑资源的本地副本并将文档的编辑版本发送回服务器(也称为“远程创作”)时,我们使用 PUT/PATCH。想想“保存文件”。

我们使用 POST 时...好吧,几乎所有其他事情。

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

考虑 HTML 此处的形式 - 信息以与资源本身的表示形式完全无关的表示形式分派到源服务器。


例如,在资源模型中,我们有一个参考点本身的资源

GET /example
200 OK
Content-Type: appplication/json

{ "referencePoint": { "x": 0, "y": 0 } }

使用远程创作语义非常合理

PUT /example
Content-Type: appplication/json

{ "referencePoint": { "x": 0, "y": 999 } }

如果资源的表示非常大(比 HTTP headers 大得多),并且变化很小,那么我们可能会使用补丁文档来传达信息,而不是完整的文档.

PATCH /example
Content-Type: application:json-patch+json

[ { "op": "replace", "path": "referencePoint/y", "value": 999 } ]

在这两种情况下,基本思想是相同的 - 我们请求源服务器更改其资源副本以匹配客户端上的编辑版本。


It is okay to use POST 其他一切。