【发布时间】:2012-06-02 10:09:09
【问题描述】:
我们正在设计一个相当复杂的 REST API,其中大部分 I/O 是具有特定结构的 JSON 编码对象。我们发现的一个挑战是以一种使客户更容易发布正确输入和处理输出的方式记录 API。由于输入和输出的数据都需要相当复杂的 JSON 对象,客户端开发者经常会引入与 I/O 对象结构相关的 bug。
现在有了所有 JSON Web API,我希望有一个通用的解决方案,但我很难找到一个。我查看了json-schema,这是一个 json 验证模式,但 IETF 草案和实现似乎都相当不成熟(即使它们已经存在了一段时间,这不是一个好兆头)。
Protocol Buffers 和Apache Avro 提供了一种稍微不同的方法,其中架构不用于验证,但实际上需要用于消息的编码/解码。在这 2 个中,Avro 的文档和实现似乎相当有限。 ProtoBuf 似乎更好,但我不确定这是否真的适合在浏览器中使用来调用 JSON api?
现在我开始怀疑我是否从正确的角度看待这个问题。是否有其他方法可以使我的 API 更加强类型?还是对 JSON REST/RPC API 的正式描述违背了使用 JSON 的目的?
编辑:在此主题后 6 个月,我们找到了 mongoose,这与我们正在寻找的内容非常接近。
【问题讨论】:
-
如果你真的需要使用现有的解决方案,我会选择 json-schema,它看起来很容易使用。否则,我认为自己检查 JSON 结构并不难——检查每个对象是否具有您需要的属性,如果您也有,则递归地执行此操作。与 XML 不同,JSON 的验证非常简单,这可能就是不存在合适的模式验证解决方案的原因。
标签: json rest rpc protocol-buffers idl