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

Swagger Editor报"bad indentation of a mapping entry"错误,OpenAPI参数定义排查

解决Swagger Editor的"bad indentation of a mapping entry"解析错误

这个错误是典型的YAML缩进违规问题——毕竟OpenAPI定义基于YAML,而YAML对层级缩进的要求堪称"吹毛求疵",你的参数定义里肯定有某个键值对(映射条目)的缩进没跟上同层级的节奏,或者嵌套层级乱了。

我给你列几个最常见的踩坑场景,对照着检查你的参数定义就行:

场景1:嵌套属性缩进过度

比如你可能写成了这样:

paths:
  /users/{id}:
    get:
      parameters:
        - name: id
          in: path
          required: true
            schema:  # 这里错了!schema是和required同层级的参数属性,不该缩进更多
              type: integer

这里schema的缩进比同层级的required多了,导致YAML解析器错误地认为它是required的子属性,完全不符合OpenAPI的结构规范。

场景2:同层级属性缩进不足

另一种常见错误是参数的属性没对齐:

parameters:
  - name: page
  in: query  # 这里缩进少了!in应该和name同层级,属于同一个参数条目
    schema:
      type: integer

这个in的缩进和上面的name不一致,YAML会把它当成一个新的参数条目,自然就触发解析错误了。

场景3:混用Tab和空格

YAML绝对不允许同时用Tab和空格缩进,很多编辑器默认用Tab,但Swagger Editor要求统一用2个空格缩进。如果你的参数定义里混了Tab,也会触发这个错误。

正确的参数定义示例

对照下面的标准写法调整你的代码:

paths:
  /users/{id}:
    get:
      parameters:
        - name: id
          in: path
          required: true
          schema:  # 和required、in严格对齐,用2个空格缩进
            type: integer
        - name: page
          in: query
          schema:
            type: integer
            minimum: 1

最后给个实用小技巧:Swagger Editor会在错误行附近标红提示,你直接盯着标红的那行,对比它上下同层级的元素(比如同是参数属性的in、required)的缩进空格数,调整成一致就搞定了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:57:20