覆盖"主持人"和" basePath"在" / {path}"水平

时间:2016-05-11 09:00:11

标签: swagger openapi

问题陈述:

对于一个"奇怪的"原因是,我们API的所有操作都有不同的主机"。我们有这样的API:

  • 操作1:GET https:// host1:port1 / api / resources
  • 操作2:获取https:// host1:port2 / api / resources / {id}
  • 操作3:POST https:// host2:port3 / api / resources
  • 操作4:POST https:// host2:port4 / api / resources / search

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

问题:

1 /这个功能 - 覆盖"主机"和" basePath"在" / {path}"水平 - 有意义吗?

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

3 /我能否/我应该对OpenAPI提出这种改变?

欢迎任何其他有用的评论/评论; - )

2 个答案:

答案 0 :(得分:4)

swagger 2.0规范不支持此功能。它添加到下一个版本中,因此无需添加提案!见这里:

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

答案 1 :(得分:2)

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: ...