是否需要包含正文的HTTP PUT请求?

我无法在标准中find明确的规格说明。 我有一个HTTP客户端,不包括一个'Content-Length:0'标头,当做一个PUT请求时,我没有指定一个正文,服务器被这样的请求弄糊涂,我想知道我应该哪个程序责备。

如果HTTP请求具有Content-Length或Transfer-Encoding标头( RFC 2616 4.3 ),则它们具有主体。 如果请求既没有,也没有主体,你的服务器应该这样对待它。

也就是说,对于一个PUT请求来说没有任何主体是不寻常的,所以如果我devise的客户端真的想发送一个空的主体,我会通过Content-Length:0。事实上,根据读者的POST和PUT方法定义( RFC 2616 9.5,9.6 ),人们可能会争辩说,身体暗示是必需的 – 但是,一个合理的方式来处理没有身体将是假设一个零长度的身体。

不回答这个问题,而是断言jaxrs如何让我频繁使用无身体的PUT:

无主放置示例:授予用户额外的权限。

PUT / admin /用户/ {用户名} /权限/ {权限}

如果没有内容,那么正在将PUT(在动词意义上)放到服务器上? 规范将内容称为“封闭的实体”,但没有内容的请求不会有封闭的实体,因此没有放置在服务器上。

当然,除非你想把任何东西放到服务器上,否则你可能需要一个DELETE。

IETF标准并不要求主体,​​尽pipe如果没有主体,内容长度应该是0。 使用适合你正在做的事情的方法。 如果你把它写成代码,给定

int x; int f(){ return x; } 

和一个称为r的远程variables。

一个职位相当于

 r=f(); 

一个expression相当于

 r=x; 

和get相当

 x=r; 

内容长度字段是按照HTTP / 1.1标准中的以下章节http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13