【问题标题】:Can/should I use YAML as payload in RESTful webservice?我可以/应该使用 YAML 作为 RESTful Web 服务中的有效负载吗?
【发布时间】:2016-01-27 14:40:16
【问题描述】:

正如标题所说。

总的来说,这些天我更喜欢 YAML 而不是 JSON。我在当天使用 JSON 实现了一个 RESTful WS PoC。我想知道是否可以改用 YAML。

例如是否有足够的工具/库/支持来做到这一点?或者,如果我使用 JSON 来代替,我会避免做很多平凡/乏味的编码吗?

我从 WWW 了解到:REST 不限制使用 YAML 作为有效负载,对吗?

谢谢!

【问题讨论】:

  • 你是对的。不知道有谁做。我相信 yaml 解析起来可能会很慢,但那里可能是错误的。
  • 你当然可以。使用任何特定媒体类型作为资源表示没有任何限制。你可以用 YAML 表示任何你可以用 JSON 表示的东西。不过,图书馆的支持可能确实要差得多。请记住,要真正实现 RESTful,API must be hypertext-driven,即您不能只使用 application/jsonapplication/x-yaml,因为这些媒体类型都不提供超文本。您需要定义自己的媒体类型,例如 application/x-yaml+kashyapws 或其他。
  • 你为什么不同时使用呢?我猜你的一些第 3 方客户端喜欢 JSON,而其他人可以使用 YAML,如果他们更喜欢那个......
  • @Claudiu 供应商特定的 MIME 类型是关于自描述消息,因此如果您不使用 RDF 并使用元数据注释数据,那么您应该使用供应商特定的 MIME 类型并记录每个数据属性的意思。您仍然需要在标头中发送超链接,或者您需要创建一个 WADL 或 WSDL 文件,因为 MIME 类型没有记录这些链接。除非您的供应商特定 MIME 类型支持超链接,并且您在响应中发送超链接。

标签: json web-services rest yaml


【解决方案1】:

是的,如果我们的目标是让数据特别容易被人类读取。 REST 本身并不像模式那样关注协议/格式。

但是,对于 Web 服务来说,这里并没有太多好处,它通常代表应用程序到应用程序的通信。计算机不在乎,可以打印漂亮的 JSON 以在一定程度上提高易读性。

主流语言很好地支持 YAML,但并不总是像 JSON 通常包含在标准库中。所以你可能会看到一个额外的库依赖。 此外,如果客户端是浏览器,解析会更慢,因为您必须使用非本机外部库,例如此处使用的描述:JavaScript YAML Parser。确保它在传输过程中被压缩,否则额外的缩进空间会扩大数据的大小。

此外,YAML 具有许多深奥且具有潜在危险的特性。每当我使用它时,我都会使用“安全”解析器,并停用除数据结构之外的大部分功能。

我可以想象一些实用程序作为调试参数,也许url.yaml…?fmt=yaml 在开发过程中提供帮助。但是,否则所有的麻烦都不会有太大的收获。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多