HTTP 中无表示或空表示

No representation or empty representation in HTTP

在 HTTP 响应中,没有表示的资源与具有空字符串表示的资源之间是否存在明显区别?

如果是这样,我如何区分这两种情况?是否有多种表达方式?

请在您的回答中提供对当前 IETF RFC 的引用。

In HTTP responses, is there a clear difference between a resource that has no representation and a resource that has a representation that is an empty string?

HTTP 有一种指定的方式来描述零字节长的表示(字节数组):204 No Content

The 204 (No Content) status code indicates that the server has successfully fulfilled the request and that there is no additional content to send in the response payload body. Metadata in the response header fields refer to the target resource and its selected representation after the requested action was applied.

这有时在网络 API 中用于描述“标志”资源。 github api用204/404表示星星的presence/absence。

也就是说,您区分空表示和空表示的能力将取决于该表示的媒体类型;客户端和服务器需要以相同的方式理解消息有效负载,并且它们通过 Content-Type header.

传达 meta-data 的那一点

例如,RFC 7231指定application/json表示是一个JSON-text是一个value(被可选的白色包围space),其中有效value 的产生式包括 string 或文字 null。所以那些很容易区分

另一方面,如果内容类型是 text/plain...那么,零长度字节数组是表示空文本文件的自然方式,因此我希望空字符串具有相同的表示。我完全不知道除了零长度字节数组之外还有什么表示可以用于“无表示”,所以我想这种情况无法区分。

如果我不得不想出一种方法来报告不同的零长度表示,以某种无法形容的方式……我想我会在content-type 本身,从 vendor tree or the personal tree 中获取媒体类型。这样做我会隐隐约约地感到不自在,并且会担心对缓存、连接等的影响。

这不是我想要的问题