Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RESTAPI最佳实践是返回单个字符串还是将其包装在JSON对象中?_Json_Rest - Fatal编程技术网

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

RESTAPI最佳实践是返回单个字符串还是将其包装在JSON对象中?,json,rest,Json,Rest,我有一个端点可以返回几个状态之一,例如“活动”、“取消”等 在响应中仅以字符串形式返回此值是否是一种不好的做法,如: "Active" 或者我应该将其包装在JSON对象中,如: { "status": "Active" } JSON的当前引用是 JSON值必须是对象、数组、数字或字符串,或者 以下三个文字名称: 假的 空的 真的 因此,返回带引号的字符串是可以的,因为这是资源的自然表示形式 事情可能变得复杂的地方:稍后

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

在响应中仅以字符串形式返回此值是否是一种不好的做法,如:

"Active"
或者我应该将其包装在JSON对象中,如:

{
    "status": "Active"
}
JSON的当前引用是

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

  • 假的
  • 空的
  • 真的
因此,返回带引号的字符串是可以的,因为这是资源的自然表示形式


事情可能变得复杂的地方:稍后发现资源的自然表示形式是消息,而不是字符串

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

但这是一种折衷:如果只需要一个字符串,那么为未来的灵活性所付出的代价将略微降低处理的便利性

如果您控制所有API使用者,并且可以在模式的锁定步骤中更改使用者,那么您可以从简单的答案开始,并在需要更复杂的表示时着手解决所有问题

当您无法控制客户机,或者更改lockstep很昂贵时,此计划就没有那么吸引人了

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

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


我最强烈的建议是:无论你走哪条路,都要留下书面记录。当你做出选择时,你所知道的一切,以及你对未来风险和复杂性的预期。这样,将来您将能够。

第一个是无效的JSON。因此,如果要使用JSON,必须使用后者。此外,使用JSON使扩展API更加容易,例如,如果您想添加另一个字段。