HTTP中没有表示或空表示

时间:2016-11-29 18:36:43

标签: rest http rfc representation

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

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

请在答案中提供对当前IETF RFC的参考。

1 个答案:

答案 0 :(得分:1)

  

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

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

  

204(无内容)状态代码表示服务器已成功完成请求,并且在响应有效负载正文中没有要发送的其他内容。响应头字段中的元数据在应用请求的操作后引用目标资源及其选定的表示。

有时在web apis中使用它来描述“flag”资源。 github api使用204/404来表示是否存在星星。

那就是说,你区分空表示和空表示的能力将取决于该表示的媒体类型;客户端和服务器需要以相同的方式理解消息有效负载,并通过Content-Type标头传达该位元数据。

例如,RFC 7231指定application/json表示为JSON-textvalue(由可选空格包围),其中{{1}有效制作包含value或文字string。所以这些很容易区分

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

如果我必须想出一种方法来报告不同的零长度表示,以某种不可言喻的方式......我想我会在内容类型本身编码信息,从vendor treepersonal tree获取媒体类型。这样做我会觉得模糊不清,并且会担心对缓存,连接等的影响。

这不是我想要的问题。