You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenAPI YAML的description字段中|、>、>-有什么核心区别?

YAML 块标量语法(|、>、>-)的核心区别

首先要明确:这三个写法的差异完全来自通用YAML解析规则,不是OpenAPI的自定义语法——OpenAPI的配置文件本身基于YAML格式,对多行文本的支持只是继承了YAML的原生能力,三者的行为在所有YAML解析器里都是统一的。
三者的核心差异围绕两个维度展开:文本内部的换行处理规则、文本末尾的换行处理规则。

各语法的具体行为

1. description: |(字面块标量)

这是规则最直接的多行语法:

  • 完整保留文本块内部的所有硬换行、行首缩进,不会把连续书写的行拼接成一行
  • 默认会在整个文本的末尾保留1个换行符

举个实际解析的例子:

description: |
  接口入参说明:
  - id: 用户唯一标识
  - name: 用户名称

最终解析得到的description值为:

接口入参说明:
- id: 用户唯一标识
- name: 用户名称
\n

(最后多出的\n就是默认保留的末尾换行)
这种写法最适合需要严格保留排版的内容,比如带Markdown列表、代码块的接口说明——毕竟Markdown的列表、分段完全依赖硬换行,用|写出来的描述渲染出来格式不会乱。

2. description: >(折叠块标量)

这个语法本质是为了方便开发者在YAML里写长文本时手动折行读文件,不会因为把长句子都挤在一行导致编辑的时候看不清,最终输出的文本是连续的段落流:

  • 把文本块内部所有单个连续的硬换行替换成普通空格,仅当出现连续空行时,才会保留1个硬换行作为段落分隔
  • 同样默认在文本末尾保留1个换行符

用和上面一样的内容举例:

description: >
  接口入参说明:
  - id: 用户唯一标识
  - name: 用户名称

最终解析得到的description值为:

接口入参说明: - id: 用户唯一标识 - name: 用户名称
\n

可以看到所有换行都被换成了空格,原本的列表完全失效,变成了一整行的文本。这个语法适合写大段没有格式要求的自然语言说明,比如接口的整体业务背景描述,只要段落流畅就行,不需要保留硬排版。

3. description: >-(带修剪修饰的折叠块标量)

这个语法是在>的规则基础上,加了一个末尾修剪的修饰符:

  • 完全继承>的换行折叠规则:单个换行换空格,空行保留硬换行
  • 额外去掉整个文本末尾的所有换行符,不会像前两个语法那样在最后留多余的\n

还是用上面的例子:

description: >-
  接口入参说明:
  - id: 用户唯一标识
  - name: 用户名称

最终解析得到的description值为:

接口入参说明: - id: 用户唯一标识 - name: 用户名称

对比上面>的解析结果,少了最后那个多余的末尾换行。

补充说明:所有YAML块标量后面都可以加两个可选的修饰符:-代表「修剪末尾所有换行」,+代表「保留文本块里所有的末尾空行」;如果不加修饰符,默认行为就是「在文本末尾保留1个换行」。比如|-就是|基础上修剪末尾换行的版本,规则和>-是完全对应的。


OpenAPI 场景下的选型建议

  • 如果description里要带Markdown格式(列表、代码块、强制换行的强调内容),直接选|,避免因为换行折叠导致格式渲染失效
  • 如果是纯段落的业务说明,不想在最终生成的文档里出现多余的末尾空行,选>-会更干净
  • 千万别用>写带格式的Markdown内容,这是OpenAPI开发里非常常见的格式踩坑点

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 17:15:04