Swagger原始类型的定义

时间:2016-03-08 15:18:40

标签: rest swagger

是否可以为基本类型定义一个swagger定义/模型?例如,请考虑以下

definitions:
  program_name:
    type: string
    description: Unique string id

但是,上面的示例返回了许多错误(例如,swagger期望properties字段)并且没有示例使用任何非type: object的定义。

目的是将其用作另一个模型的子组件以及参数 - 以某种方式重用已定义的组件。

将此视为一个招摇的typedef

编辑:根据规范,定义对象与架构对象http://swagger.io/specification/#schemaObject相同,后者声明它可以接受基本类型。

另外,假设定义部分中可以存在原始类型,可以使用简单的参数类型(查询,路径等)来引用原语定义类型吗?

1 个答案:

答案 0 :(得分:0)

示例中的基本模式是有效的,并且可以在需要Schema对象时使用,例如,作为另一个模式的子组件:

definitions:
  Program:
    type: object
    properties:
      program_name:
        $ref: "#/definitions/program_name"

  # This becomes:
  # type: object
  # properties:
  #   program_name:
  #     type: string
  #     description: Unique string id

或作为操作体参数或响应模式:

paths:
  /something:
    post:
      summary: POSTs and returns a string
      parameters:
        - in: body
          name: program_name
          schema:
            $ref: "#/definitions/program_name"
      responses:
        "200":
           description: OK
           schema:
             $ref: "#/definitions/program_name"

但是,简单的参数 - 路径,查询,标题和表单 - 不使用schema关键字(而是使用type),因此他们无法引用definitions中的模式。< / p>

这将在下一个版本OpenAPI 3.0中进行更改,其中schema将用于all parameter types