为什么 JSON 应该有一个 status 属性

2024-04-24

我偶然发现了一种相当普遍的做法。我什至找到了一个为其命名的网页,但我忘记了名称,并且无法再在谷歌上找到该页面。

实践中,来自 REST 服务的每个 JSON 响应都应具有以下结构:

{
    "status": "ok",
    "data": { ... }
}

或者在错误情况下:

{
    "status": "error",
    "message": "Something went wrong"
}

我的问题:为什么 JSON 中需要这样的“状态”属性?在我看来,这就是 HTTP 状态代码的用途。

REST使用客户端和服务器之间的HTTP通信方式,例如“DELETE”动词应该用于删除。同样,如果未找到资源等,则应使用 404。因此,根据这种想法,任何错误情况都应在 HTTP 状态中正确编码。

是否有特定原因在错误情况下返回 HTTP 200 状态代码并在 JSON 中显示错误?它似乎只是在处理响应时使 javascript 条件分支变得更加复杂。

我发现在某些情况下,状态可以是“重定向”,以告诉应用程序重定向到某个 URL。但如果使用正确的 HTTP 状态代码,浏览器将“免费”执行重定向,从而正确维护浏览历史记录。

我主要想象你的两个可能的答案:

  • 要么有两个争吵的社区,每个社区都有他们最喜欢的方法(始终使用 HTTP 状态与从不使用 HTTP 状态)
  • 或者我遗漏了重要的一点,您会告诉我,虽然在某些情况下应该使用 HTTP 状态,但在某些特定情况下,HTTP 状态不适合,并且“状态”JSON 属性会发挥作用。

你是对的。我认为您所看到的是人们没有正确执行 REST 的副作用。或者根本不做 REST。使用 REST 并不是设计良好的应用程序的先决条件;没有规定 Web 应用程序必须是 REST 式的。

另一方面,对于错误情况,有时应用程序希望返回 200 代码,但返回一个错误来表示业务逻辑故障。 HTTP 错误代码并不总是与应用程序业务错误的语义相匹配。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 JSON 应该有一个 status 属性 的相关文章

  • 可以通过 url 发送 JSON 吗?

    我有一个 ruby 哈希 其中键是 url 值是整数 我将哈希值转换为 JSON 我想知道是否能够通过 AJAX 请求在 url 内发送 JSON 然后从 params 哈希值中提取该 JSON 另外 我将把 JSON 化的 ruby 哈希
  • 使用来自Processing-JS的JSON

    我想使用编写一个应用程序处理 JS http processingjs org 并且我希望能够使用服务器端数据加载它 我还没有编写服务器端 所以我可以使用任何东西 但似乎明显的 AJAX 事情是使用 JSON 将数据上传到页面中 如何从我的
  • 尽管遵循安装说明,Beaker 仍无法找到 Python 和 Julia 安装

    我最近安装了 Beaker Notebook 但无法启动 Python 我已经安装了 Python 它是使用 Anaconda 安装的 实际上推荐用于 Beaker 我已经编辑过beaker pref json指向我的安装 见下文 但它无法
  • 放心 + 模拟 MVC @ControllerAdvice

    在我的项目中 我使用 Rest Assured MockMVC 并具有以下依赖项
  • 在 Mono 中反序列化 JSON 数据

    使用 Monodroid 时 是否有一种简单的方法可以将简单的 JSON 字符串反序列化为 NET 对象 System Json 只提供序列化 不提供反序列化 我尝试过的各种第三方库都会导致 Mono Monodroid 出现问题 谢谢 f
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • 如何(安全)将 Python 对象发送到我的 Flask API?

    我目前正在尝试构建一个 Flask Web API 它能够在 POST 请求中接收 python 对象 我使用 Python 3 7 1 创建请求 使用 Python 2 7 运行 API 该 API 设置为在我的本地计算机上运行 我试图发
  • MongoDB 中有内置的 JSON.parse 吗?

    是否有任何 Mongo 命令行 函 数可以将字符串转换为对象 例如JSON parse 或类似的东西 db sessions update set extra JSON parse stringData 我的解决方案 function my
  • 使用 AFNetworking 2.0 发布 JSON 数据

    我有一个 Web 脚本 它通过 HTTP POST 请求接受 JSON 字符串作为输入 我遇到过几个相同的 AFNetworking 1 x 示例 任何人都可以指出我或提供 AFNetworking 2 0 示例 以对使用格式化 JSON
  • 为 Rest Web 服务创建 WCF 代理

    我有一个复杂的 WCF Rest 服务 它需要多个输入和对象 我不能简单地通过在 Fiddler 中执行 HTTP POST 来调用它 因为要提供的数据太多 我可以 但这将花费我很长时间 所以我想使用代理在代码中完成它 有没有办法为 NET
  • JSON:@Transient 字段未序列化

    我有一个域类 Loan java 其中有一个未持久化的字段 JsonInclude Transient private LoanRating loanRating Public Getters and setters for that fi
  • 如何反序列化嵌套对象?

    我已经成功地通过创建数据契约类来创建反序列化 在对客户进行了一番唠叨之后 我的问题是我声明的两个字段都返回空的东西 因此 我查看了它并意识到 JSON 对象是嵌套的 并且我不清楚如何访问内部的部分 数据合同是这样的 但我得到Bopp作为 n
  • 平静的 POST 响应的“最佳”实践

    所以这里没有什么新内容 我只是想得到一些澄清 似乎在其他帖子中找不到任何澄清 我正在平静地创建一个新资源 说 books POST 与身体 title The Lion the Witch and the Wardrobe author C
  • REST api 可以通过两个 HTTP 方法公开吗?

    问题是我们有一个复杂的搜索 api 查询字符串 并且希望让用户可以方便地使用 body 所以我们希望同时允许 GET 和 POST 或 PUT 我知道 对于搜索是否为只读操作存在争论 并且根据 REST 标准 它应该只能是 GET 据我了解
  • 普通 JSON 到 GraphSON 格式

    我有两个问题 我在哪里可以真正找到 GraphSON 文件的基本格式 保证 gremlin 控制台成功加载 我正在尝试将 JSON 大约有 10 20 个字段 转换为另一个可以由 gremlin 查询的文件 但我实际上找不到有关 graph
  • 找不到具有不同构建变量的包名称“....”的匹配客户端

    我想实现推送通知 我添加到项目级别 dependencies classpath com android tools build gradle 2 2 2 classpath com google gms google services 3
  • 反序列化时出现 Gson 异常(无参数构造函数不存在)

    我遇到了一个问题 该问题仅在 5000 台设备中的 10 台中出现 无法用我的模拟器和测试设备重现它 这似乎是一个非常具体的问题 仅涉及少数设备 我所拥有的只是堆栈跟踪和我的代码 因此 我正在针对黑洞进行开发 只有在 GooglePlay
  • Android.system.ErrnoException:isConnected失败:ECONNREFUSED(连接被拒绝)

    我使用Java连接MySQL和Json将数据发送到android 当我通过URL地址将数据从Java发送到json时 http 192 168 1 221 9999 rentalcar service category getAllManu
  • 如何使用 C# 调用 REST API?

    这是我到目前为止的代码 public class Class1 private const string URL https sub domain com objects json api key 123 private const str
  • 将 JSON 字符串转换为 NSDictionary 时,并非所有键都起作用

    我使用以下代码将 JSON 字符串文字转换为包含每个项目的 NSDictionary 的数组 NSString json name Item 1 id 999 lang en type A version 15 NSData data js

随机推荐