在Swagger中使用JSON和YAML有什么实际区别?

Mic*_*ant 3 json yaml swagger

似乎JSON包含路径信息和http请求动词,而YAML似乎仅定义一个树结构。

它们之间有什么区别?还是我在这里混淆了不同的概念/层次结构?新手大张旗鼓,刚刚开始学习。

如果YAML是JSON的超集,那么该超集具体要添加到这里-是URL路径和HTTP动词吗?是否example还添加了YAML为Swagger添加到JSON的内容?

小智 9

JSON 不支持注释,而 YAML 支持!

  • 不过,在我看来,任何评论都应该写入文档本身,而不是 YAML 规范级别。 (8认同)

fly*_*lyx 8

根据OpenAPI规范

符合OpenAPI规范的OpenAPI文档本身就是JSON对象,可以用JSON或YAML格式表示。

因此,就功能而言,使用JSON或YAML之间没有区别。YAML作为JSON的超集在这里添加的只是一种不同的语法。使用规范中的示例,这两个文档是相同的:

{
  "servers": [
    {
      "url": "https://development.gigantic-server.com/v1",
      "description": "Development server"
    },
    {
      "url": "https://staging.gigantic-server.com/v1",
      "description": "Staging server"
    },
    {
      "url": "https://api.gigantic-server.com/v1",
      "description": "Production server"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

servers:
- url: https://development.gigantic-server.com/v1
  description: Development server
- url: https://staging.gigantic-server.com/v1
  description: Staging server
- url: https://api.gigantic-server.com/v1
  description: Production server
Run Code Online (Sandbox Code Playgroud)

第一个文档是有效的JSON和有效的YAML(因为YAML是JSON的超集)。第二份文件是有效的YAML,其结构与第一份文件相同。

因此,要回答有关YAML超集在此处添加的问题:它添加了用于指定相同结构的不同语法。而已。

YAML确实包含一些无法映射到JSON的功能,但是在这里它们无关紧要,因为Swagger / OpenAPI不使用它们。