如何用swagger引用响应对象?

时间:2015-07-06 15:29:39

标签: api 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不能。

Operation Object definiton (partial)

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

1 个答案:

答案 0 :(得分:18)

如果看到here,则必须将HTTP状态代码定义为密钥,然后正确的语法为:

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