VSCode OpenAPI(Swagger) Editor引用外部Schema文件出现Resolver错误
问题原因
这个是VS Code OpenAPI (Swagger) Editor 4.6.4扩展内置的Swagger UI渲染器的$ref解析bug,具体触发逻辑如下:
- Swagger UI内置的JSON Schema解析器在处理多层跨文件相对引用时,当有多个接口路径同时引用不同的外部Schema文件,会错误地将后续解析的外部Schema的根路径,绑定到之前已经处理过的OpenAPI内部路径片段上。你遇到的报错就是解析器本该去外部
pet-lite.schema.json文件里找对应Schema,却错误跑到当前OpenAPI文件的#/paths/~1pet~1%7BpetId%7D/get/responses/200/content/application~1json/schema/allOf/0这个不存在的内部路径下查找引用,最终抛出解析失败。 - 你排查到的两个规律完全匹配这个bug的触发条件:
- 移除任意一个PATH定义后,不需要并行处理多个路径下的不同外部Schema引用,解析器路径计算不会出现混乱,问题自然消失
- 全部使用内联Schema时没有跨文件引用场景,解析器不需要处理外部文件的根路径切换,不会触发路径计算错误
- 切换到ReDoc渲染后问题消失,是因为ReDoc的
$ref解析逻辑为独立实现,不存在Swagger UI解析器的这个路径计算缺陷。
内容的提问来源于stack exchange,提问作者nize
相关产品推荐
相关产品推荐

