xml - CSV、JSON 和 XML 对于 REST API 的相对优点是什么?

我们目前正在为一个应用程序计划一个新的 API,并讨论我们应该用于交换的各种数据格式。关于 CSVJSONXML 的相对优点的讨论相当激烈。

基本上,争论的症结在于我们是否应该支持 CSV,因为缺少递归(即拥有一个包含多个作者的文档multiple references 将需要 多次 API 调用 来获取所有 信息)。

在您使用来自 Web APIs 的信息时可能有的经验,以及我们可以做些什么来使使用我们的 API 的开发人员的生活更轻松。


我们的决定:

We've decided to provide XML and JSON due to the difficulty in recursion in CSV needing multiple calls for a single logical operation. JSON doesn't have a parser in Qt and Protocol Buffers doesn't seem to have a non-alpha PHP implementation so they are out for the moment too but will probably be supported eventually.

最佳答案

优点:

  • XML - 很多库,开发人员熟悉它,XSLT,可以很容易地被客户端和服务器(XSD,DTD)验证,分层数据
  • JSON - 易于在客户端解释、紧凑的符号、分层数据
  • CSV - 在 Excel 中打开(?)

缺点:

  • XML - 臃肿,在 JavaScript 中比 JSON 更难解释
  • JSON - 如果使用不当会造成安全漏洞(不要使用 eval),并非所有语言都有库来解释它。
  • CSV - 不支持分层数据,您将是唯一一个这样做的人,实际上解析有效的 csv 文件比大多数开发人员认为的要困难得多(CSV 值可以包含新行,只要它们在引号之间,等等)。

鉴于上述情况,我什至不会费心支持 CSV。如果确实需要,客户端可以从 XML 或 JSON 生成它。

https://stackoverflow.com/questions/138929/

相关文章:

ruby-on-rails - rails : Restrict API requests to J

python - 如何以人类可读的格式序列化 Python 对象?

c# - ASP.NET web api 无法获取 application/x-www-form-u

java - 如何使用 Java 和 Jackson 库对 Json 字符串进行多态反序列化?

java - 为什么 Json 测试程序不起作用?

java - 如何使用 Jackson 定义可选的 json 字段

javascript - 定义 "cyclic data structures"

json - 将参数传递给 jq 过滤器

java - 对 kotlin 数据类使用 Jackson @JsonProperty 注释

Java - 嵌套在嵌套中的 Gson 解析