在发出HTTP DELETE请求时,请求URI应该完全标识要删除的资源。但是,是否允许添加额外的元数据作为请求实体主体的一部分?


当前回答

有些版本的Tomcat和Jetty似乎会忽略存在的实体体。如果你想要收到它,那就麻烦了。

其他回答

值得注意的是,OpenAPI 3.0版本的规范放弃了对带体的DELETE方法的支持:

请看这里和这里的参考资料

这可能会影响将来这些api的实现、文档或使用。

如果有人在测试中遇到这个问题,不,它不是普遍支持的。

我目前正在用Sahi Pro进行测试,很明显,http DELETE调用剥离了任何提供的主体数据(根据端点设计批量删除的大量id列表)。

我已经和他们联系了几次,也把脚本、图片、日志三个包分开发给他们审核,他们还没有确认。一个失败的补丁,后来他们的支持缺席了电话会议,我仍然没有得到一个可靠的答案。

我确定Sahi不支持这个功能,而且我可以想象有许多其他的工具跟随套件。

有些版本的Tomcat和Jetty似乎会忽略存在的实体体。如果你想要收到它,那就麻烦了。

2014年更新的HTTP 1.1规范(RFC 7231)明确地允许在DELETE请求中使用实体:

DELETE请求消息中的有效负载没有定义的语义;在DELETE请求上发送有效负载主体可能会导致某些现有实现拒绝该请求。

ElasticSearch似乎使用了这个: https://www.elastic.co/guide/en/elasticsearch/reference/5.x/search-request-scroll.html#_clear_scroll_api

也就是说妮蒂支持这个。

就像评论中提到的那样,情况可能不再是这样了