2016-03-08 97 views
2

是否可以为原始类型定义一个swagger定义/模型?例如,请考虑以下Swagger原始类型的定义

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

然而,上面的例子回来了很多错误(招摇预计例如properties场),并没有例子采用任何定义,它的type: object不是。

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

认为这是一个招摇的typedef

编辑:根据规范,一个定义对象是一样的架构对象http://swagger.io/specification/#schemaObject,其中指出,它可以接受基本类型。另外,假设基本类型可以存在于定义部分,那么简单参数类型(查询,路径等)是否可以引用基元定义类型?

回答

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参考架构。

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