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更加容易,例如,如果您想添加另一个字段。