在“/{path}”级别覆盖 "host" 和 "basePath"

Override "host" and "basePath" at the "/{path}" level

问题陈述:

由于"strange"的原因,我们对一个API的所有操作都有不同的"host"。我们有 API 这样的:

如果我们按原样使用 Swagger/OpenAPI,这意味着每个操作创建一个 Swagger/OpenAPI 规范,导致每个操作有一个 swagger-ui 页,然后,需要重新创建一个索引页面以列出 API :-/ 的所有操作,这正是我们想要避免的。

问题:

1/ 此功能 - 在“/{path}”级别覆盖 "host" 和 "basePath" - 有意义吗?

2/ 是否有人已经尝试在 swagger 中实现此功能-ui?

3/ Could/should 我建议这样改 OpenAPI?

欢迎任何其他有用的 remarks/comments ;-)

Swagger 2.0 规范不支持此功能。不过下个版本加入,建议不用加了!看这里:

https://github.com/OAI/OpenAPI-Specification/issues/562

OpenAPI 3.0 现在支持在路径或操作级别覆盖目标服务器:

openapi: 3.0.0

servers:
  - url: https://my.api.com/v1

paths:
  /foo:
    # Override the server at path level
    servers:
      - url: https://another.server:8443/basePath

    get: ...
    post: ...

  /bar:
    get:
      # Override the server at operation level
      servers:
        - url: https://some.other.server/v2

    post: ...