Rest API 最佳实践是返回单个字符串还是将其包装在 JSON 对象中?

Ror*_*ory 16 rest json

我有一个端点可以返回多种状态之一,例如“活动”、“已取消”等。

在响应中将其作为字符串返回是不是不好的做法,例如:

"Active"
Run Code Online (Sandbox Code Playgroud)

或者我应该将它包装在 JSON 对象中,例如:

{
    "status": "Active"
}
Run Code Online (Sandbox Code Playgroud)

Voi*_*son 19

当前注册的JSON 参考是RFC 8259

JSON 值必须是对象、数组、数字或字符串,或者以下三个文字名称之一:

  • 错误的
  • 无效的
  • 真的

因此,当它是资源的自然表示时,返回带引号的字符串就可以了。


事情有可能变得复杂:后来发现资源的自然表示是消息而不是字符串。

使用对象的理由是,它使我们能够灵活地向模式引入向后兼容的更改,以便我们可以包含更多信息,而不会破坏只知道原始模式的客户端。当你的表示“只是”一个字符串时,这要困难得多。

但这是一种权衡:当您只需要一根绳子时,您为未来的灵活性付出的代价是稍微不太方便的处理。

如果您控制所有 API 使用者,并且可以与架构同步更改使用者,那么您可以从简单的答案开始,并在发现您需要更复杂的表示时投入工作来修复所有问题。

当您无法控制客户或进行同步更改成本高昂时,此计划就不太有吸引力。

如果您正在创建一个外部公开的 API,那么您不太可能控制所有客户端。

也就是说,通过仔细的设计,您还可以选择仅引入新资源来覆盖您实际需要具有多个值的消息的情况。

我在这里最强烈的建议是:无论你走哪条路,都要留下书面记录。 记录您做出选择时所知道的一切,以及您预计未来会出现的风险和并发症。这样,将来您将能够恢复您的决定的背景