【发布时间】:2021-04-11 12:17:56
【问题描述】:
在将 Alfresco 的 REST API Explorer 从 Swagger UI 2 迁移到 Swagger UI 3 (3.38.0) 时,单个 API 定义引发了两个无法解析引用:未找到未定义 错误:
paths./search.post.parameters.0.schema.properties.pivots.items.properties.pivots.items.$ref
和
paths./search.post.responses.200.schema.properties.list.properties.context.properties.request.properties.pivots.items.properties.pivots.items.$ref
- 所有 API 定义在 Swagger UI 2 中都可以正常工作
- 所有 API 定义,但在 Swagger UI 3 中都可以正常工作
- this API definition 的 YAML 在结构上似乎与 the other API definitions 的 YAML 相同
- Swagger 验证器告诉我 YAML 有效:
我经历了很多不同的 StackOverflow Q&A 和 GitHub 问题,并带有类似的错误消息,但它们大多与 YAML 无效或 $ref 的兄弟姐妹不受支持有关,而这里似乎并非如此.
这是 Swagger UI 3 的误报,还是 API 定义本身有问题?
我可以做些什么来避免收到这些消息吗?
如果有人想要 SSCCE:
- 下载the branch
- 运行
mvn jetty:run-war - 打开http://localhost:8085/api-explorer
然后选择Search API 定义并单击带有/search API 的绿色行:
【问题讨论】:
-
解析器有时会因深度嵌套的模式、长
allOf+$ref链和/或循环引用而窒息。以下是 Swagger 存储库中的类似问题:github.com/swagger-api/swagger-js/issues/1570、github.com/swagger-api/swagger-ui/issues/5726、github.com/swagger-api/swagger-ui/issues/5820。很可能您的定义很好,但您看到了其中一个错误。 -
谢谢你 Helen... 这是我的感觉,但我想要一些专家的意见。如果您将您的评论变成答案,我会接受并在到期前分配赏金。
-
顺便说一下,在打开每个页面时,API 定义都会通过 GET 正确检索。仅在此页面中且仅在触发此错误后,GET 为两个,通常的一个以 304 结尾,一个无效的以 404 结尾(它在 URL 中有
.../definitions/definitions/...而不是只有.../definitions/...)。这是为什么呢? -
这是解析器错误的一部分/症状。
标签: rest yaml swagger swagger-ui swagger-2.0