2012-08-15 71 views
13

我正在处理客户端和服务器应用程序,并遇到了一个有趣的问题。我们正在创建一个稳定的API并使用JSON响应与客户端进行通信。当做一个DELETE时,我们返回一个空的响应200 OK。我们的客户正在获得200 OK,但无法解析JSON。响应中的有效JSON

我们完全理解失败的解析(没有什么可解析的),但我们有一个更大的问题。是发送一个空白的响应有效的JSON,或者我们应该返回{}或这个效果?谢谢。

回答

12

HTTP/1.1 definition关于DELETE方法:

成功的响应应该是200(OK)如果所述响应包括描述其状态, 实体202(已接受)如果动作尚未 一直如果该行为已颁布,则返回204或204(无内容),但响应中不包含实体。

所以,如果你的服务器被立即删除的项目,然后建议的答复是:

  • 200 OK - 返回某种状态代码(如一个true或字符串说:“成功“)
  • 204无内容 - 返回任何结果,并且让您的客户看出来的这种反应,而不是试图JSON解析,同时还知道请求是成功的
+3

回复:空白响应是否为“有效的JSON” - [json.org](http://json.org/)中的定义表明JSON值可以是“双引号中的一个字符串,或者是一个数字,或者是真或false或null,或者一个对象或数组“。因此,除非“有效的JSON”和“有效的JSON值”之间存在某种哲学差异,否则我会说空白的响应不是有效的JSON。 – cloudfeet 2012-08-15 15:02:16

7

只是在这里做一个快速测试:http://jsonlint.com/显示空白不是有效的JSON,而{}是有效的JSON。

+0

是的,我已经看到了JSON解析器这样的,在客户端。我想知道的问题是,如果一个空白的响应是一个有效的JSON(在HTTP/JSON协议意义上)或者只是不能被解析。 – 2012-08-15 14:48:22