我是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空间是否合理?