首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >REST的JSON响应中是否应该包含空值?

REST的JSON响应中是否应该包含空值?
EN

Stack Overflow用户
提问于 2013-03-28 16:20:08
回答 2查看 42.2K关注 0票数 71

我正在设计和开发一个RESTful API。我对API采取了一种务实的、面向资源的方法(面向资源、统一接口、可寻址性,但没有真正的HATEOAS)。但是,我不确定的一点是如何处理对象中的空值。

我应该在API响应中包含带空值的字段吗?

示例:

代码语言:javascript
运行
复制
{
    "fieldA": "AAA",
    "fieldB": null
}

或者,如果系统没有这些字段的数据,我应该完全省略这些字段吗?

示例:

代码语言:javascript
运行
复制
{
    "fieldA": "AAA"
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-28 16:27:34

最近在API-Craft上对此进行了讨论。普遍的共识是,省略一个值与包含一个空值之间可能存在语义上的区别。

如果您的特定用例没有获得语义值,那么我要说的是查看API的目标使用者,并考虑忽略该值是否会给他们带来问题。

票数 41
EN

Stack Overflow用户

发布于 2018-05-21 05:54:23

没有明显的赢家。由于没有,客户永远不应该在技术上依赖于这方面的任何约定,客户不应该期望这两种形状。

  • 删除空值以减少带宽使用通常是不合理的(除非空字段的数量很大,并且带宽明显受损)。
  • 删除空值以使人类读者更容易地看到实际值通常是不正确的,APIs不是人机界面。
  • 保持空值以让人类读者更容易地看到文档结构通常是不合理的,API不是人机界面,API响应也不是API文档。
  • 保持空值以允许脏客户机以通常不合理的特定方式解析json,因此客户端应该干净地写成宽容的读取器。
  • 只在相应的创建方法(POST/PUT)需要显式传递空的情况下才保留空值,但通常很难实现。
  • 当每个文档都有自己的客户端时,将输出与创建期间的请求保持相同的可能是有意义的,但通常很难实现。
  • 需要考虑的一个特殊情况是,由?fields=foo,bar之类的东西触发的部分响应,其中返回所有其他字段的空值似乎有点违背直觉。
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15686995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档