【发布时间】:2014-05-07 09:10:29
【问题描述】:
我正在使用 Java 和 JAX-RS 处理 Restful Web Services,我遇到了发送 DELETE 请求的问题带有实体。
我花了几个小时寻找发送 DELETE 请求并在正文中包含消息的方法,但我发现的唯一内容是 work around using the Apache HttpClient。
我发现的一些答案是说在DELETE 请求中有一个正文是没有意义的,而且我看到许多服务器通过不允许带有正文的DELETE 来支持这一点。
例如"entity enclosing DELETE requests make no sense"
所以我的问题是为什么在DELETE 请求中包含正文不是一个好习惯?这样做有什么缺点?
谢谢
【问题讨论】:
-
可能是因为没有真正的理由在响应中包含正文。只要您知道 DELETE 已成功处理,您为什么还要关心响应消息?
-
如果你允许没有意义的事情,最终会有人有一个“好主意”,并开始使用这种可能性来采取一种意想不到的方法,带来意想不到的后果。打个比方,Web 浏览器“原谅” HTML 错误导致 WWW 包含大量格式错误的页面,这些页面可以在某些浏览器中显示,但不能在其他浏览器中显示。
-
@TimCastelijns 我问的是请求中的正文而不是响应。传递有助于删除过程的数据。
-
您能否举一个示例,说明您希望在正文中传递但不能粘贴在 URI 中的数据?
-
@Gimby 我能想到的最简单的事情是使用主键作为标识符从数据库表中删除记录。我知道这可以使用 URI 来完成,但是如果您想删除多条记录怎么办?传递正文中的信息不是比执行多个请求更好吗?
标签: java http rest web protocols