如何大摇大摆地引用响应对象?

How to reference to a response object with swagger?

我能做到:

parameters:
  avatarSizeParam:
    name: size
    in: query
    description: Size of avatar.
    enum: [32, 64]
    required: false
    type: integer
    format: int32

paths:
  /my/path/avatar:
    get:
      parameters:
        - $ref: '#/parameters/avatarSizeParam'

很好。 Swagger 定义了一个 parameters 键,您可以在其中将 Parameter Objects 定义为 重用。它还定义了一个 responses 键,您可以在其中定义 Response Objects 之类的 所以:

responses:
  notFoundResponse:
    description: Entity not found.
    schema:
      $ref: '#/definitions/schema404'

所以我假设我可以将我以前的路径定义扩展为以下内容

paths:
  /my/path/avatar:
    get:
      parameters:
        - $ref: '#/parameters/avatarSizeParam'
      responses:
        - $ref: '#/responses/notFound'

但这似乎不起作用。我回到 the spec 寻找 Operations Object 并注意到 parameters 可以是参考对象,但 responses 不能。

如果允许响应定义对象(responses 在最顶层)有什么意义 你不能参考那里的项目?有办法吗?

如果你看到here,你必须将HTTP Status Code定义为key,那么正确的语法是:

paths:
  /my/path/avatar:
    get:
      parameters:
        - $ref: '#/parameters/avatarSizeParam'
      responses:
        404:
          $ref: '#/responses/notFound'