是否可以在 OpenAPI 3 中引用单个路径和方法?

Is it possible to reference a single path and method in OpenAPI 3?

假设我有一个 OpenAPI 3 文档描述 API Foo 如下:

openapi: 3.0.0
info:
  version: '1'
  title: Foo
paths:
 /foo:
  get:
    responses:
      200:
        description: A Foo
  post:
    responses:
      201:
        description: Foo created

在 API Bar 的另一个 OpenAPI 文档中,我想参考 来自 GET /foo 的操作APIFoo。 OpenAPI 文档 talk a little about referencing a whole path。但是,如果我执行以下操作:

openapi: 3.0.0
info:
  version: '1'
  title: Bar
paths:
 /foo:
  $ref: 'foo.yaml#/paths/~1foo'

APIBar里面的GETPOST我自然都得到了,因为只引用了路径,没有引用方法

我试过这个:

openapi: 3.0.0
info:
  version: '1'
  title: Bar
paths:
 /foo:
   get:
     $ref: 'foo.yaml#/paths/~1foo/get'

但这会在各种工具中出现 should NOT have additional properties additionalProperty: $refshould have required property 'responses' missingProperty: responses 之类的错误,因此它似乎不受支持。

有没有办法做到这一点?我应该注意到真正的请求要复杂得多,因此需要去重。如果可能的话,我想避免用单个 $refs.

填充 get 的许多子对象

OpenAPI 无法$ref 单个操作(get/post/等),您只能$ref 整个路径。

您可以在 OpenAPI 规范存储库中提出语法增强:
https://github.com/OAI/OpenAPI-Specification/issues