OpenAPI 3.0对$ ref

时间:2018-11-27 23:12:56

标签: swagger-ui openapi connexion

我是OpenAPI 3.0的新手,所以请告知我是否使用了不良做法。

上下文:我正在使用Connexion构建flask应用程序来处理REST路由和验证。 Connexion加载OpenAPI规范并映射到处理程序方法。我还向Connexion提交了PR,以使$ ref能够使用本地相对文件路径。 Connexion可以很好地加载规格。

问题:我的问题是OpenAPI 3.0 specification本身。我的规范文件位于目录/oas3/1.0beta/中,并且具有相对的文件路径,但是规范中的服务器基本URL为/1.0beta/。 OpenAPI 3.0规范states

  

相对引用使用服务器对象中定义的URL作为基本URI进行解析。

示例

/oas3/1.0beta/spec.yaml:

openapi: 3.0.0
servers:
  - description: Foo
    url: https://foo.com/1.0beta/
info:
  title: The Foo API!
  version: "1.0beta"
paths:
  /bar:
    get:
      summary: Gets a bar.
      operationId: api_1_0beta.foo.bar_get
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: 'other_spec.yaml'

我希望other_spec.yaml解析为/oas3/1.0beta/other_spec.yaml,但是OpenAPI规范(以及相应的swagger tools / ui / etc)说它解析为/1.0beta/other_spec.yaml

是否有一种方法/解决方法,可以为相对的$ refs使用不同的基本URI?为API路径和相对的$ refs设置不同的URL空间是否合理?

0 个答案:

没有答案