为什么 POST 请求删除 AEM 中的节点

Why a POST request on Node deletion in AEM

在 CQ 的 crx/de 中,每个为获取数据或创建新节点、重新排列节点等而发出的请求都由 http://localhost:6502/crx/server/crx.default 提供服务。
我注意到的一件事是,为了删除数据,向服务器发出 POST 请求而不是 DELETE 请求,实际上有效负载定义它是一个删除请求,这看起来不太 RESTful

POST 请求

PAYLOAD 表示删除节点

这种行为有什么具体原因吗?

我猜这是因为 REST 与 RESTful 的不同。 恕我直言 RESTful 表示您尝试遵守 REST 原则,但您不强迫自己完全遵守,实际原因最好由 ADOBE 回答。

SlingPostServlet可用于修改存储库内容并用于内容修改。

这不是一个(好的)rest 实现 - 说明了它正在请求的事实 POST http://localhost:6502/crx/server/crx.default 而不是 POST http://localhost:6502/content/mysite/jcr:content/node1/jcr:content.

DELETE应该是幂等的。所以在需要服务器端逻辑处理并且对于任意数量的请求输出不能相同的场景,首选POST。出于同样的原因,DELETEPUT 在复杂系统中的使用往往很少。 (据我所知)。

AEM 所基于的 Apache Sling 支持直接对您要删除的资源发出 DELETE 请求,而不是通过 crx.default。据我所知,这也在 AEM 中启用。