【问题标题】:Valid JSON in Response响应中的有效 JSON
【发布时间】:2012-08-15 14:16:13
【问题描述】:

我正在开发客户端和服务器应用程序,遇到了一个有趣的问题。我们正在创建一个 RESTful API 并使用 JSON 响应与客户端通信。执行 DELETE 时,我们返回 200 OK 并返回空白响应。我们的客户获得了 200 OK,但解析 JSON 失败。

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

【问题讨论】:

    标签: json api http rest


    【解决方案1】:

    来自HTTP/1.1 definition关于DELETE方法:

    如果响应包含一个成功的响应应该是 200 (OK) 描述状态的实体,如果操作尚未完成,则为 202(已接受) 已制定,或 204(无内容),如果该行动已制定,但 响应不包含实体。

    因此,如果您的服务器立即删除该项目,那么建议的响应将是:

    • 200 OK - 返回某种状态码(如布尔值 true,或表示“成功”的字符串)
    • 204 无内容 - 不返回任何内容,让您的客户端注意此响应并且不尝试 JSON 解析,同时仍知道请求成功

    【讨论】:

    • Re: 空白响应是否为“有效 JSON” - json.org 的定义说 JSON 值可以是“双引号中的字符串,或数字,或 true 或 false 或 null,或一个对象或一个数组”。因此,除非“有效 JSON”和“有效 JSON 值”之间存在一些哲学差异,否则我会说空白响应不是有效 JSON。
    【解决方案2】:

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

    【讨论】:

    • 是的,我在客户端上看到过类似的 JSON 解析器。我想知道的问题是空白响应是有效的 JSON(在 HTTP/JSON 协议意义上)还是无法解析。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2015-12-27
    • 2014-01-15
    • 2015-10-28
    相关资源
    最近更新 更多