摇摆不同模型的多个身体

时间:2014-09-23 22:13:09

标签: javascript model swagger

大家好我所有我都是新手,并且一度停留并需要专家的帮助。 这就是我需要的东西

我想编写一个PUT方法,一次接受两种不同类型的实体。

我能够通过制作两个process_model并定义我的身体基于它们来做到这一点

>  api.process_model('MacBased',
>     {'id' : 'MacBased',
>     'required': [ 'physicalMacAddress'],
>     'properties': {
>        'physicalMacAddress' : {
>           'type' : 'string',
>           'description' : 'Mac address.'
>       },
>       'vlan' : {
>          'type' : 'string',
>          'description' : 'vlan id '
>       }
>     }
   });

api.process_model(' InterfaceBased',

{'id' : 'InterfaceBased',
'required': [ 'interfaceName', 'hostName'],
'properties': {
  'interfaceName' : {
    'type' : 'string',
    'description' : 'physical interface name'
   },
  'hostName' : {
    'type' : 'string',
    'description' : 'Name of machine'
   },
   'vlan' : {
     'type' : 'string',
     'description' : 'vlan id '
   }
}
     

});

然后像这样的身体

>  api.process_api('PUT', {
>     // general group that this api belongs to
>     'group' : "ABC",
>     'spec' : {
>       path : "/config/{name}",
>       method : "PUT",
>       notes : "",
>       produces : ["application/json"],
>       parameters : [param.path("name", "Name", "string"),
>                           {
>                           "name": "body",
>                           "description": "Mac based",
>                           "required": false,
>                           "type": "MacBased",
>                           "paramType": "body"
>                           },
>                           {
>                           "name": "body",
>                           "description": "Device based",
>                           "required": false,
>                           "type": "InterfaceBased",
>                           "paramType": "body"
>                           }]

这里一切正常,我可以在Swagger中看到两个正文文本框。 问题是,我填充的一些人都试图验证JSON第一个模型是基于MacBased 所以第一个身体数据很好,当我尝试使用第二个主体发布数据时它解析失败。

知道如何使用该主体的指定模型解析数据吗? 感谢

1 个答案:

答案 0 :(得分:4)

Swagger不支持多个body参数声明。您最多可以有一个body参数。

然而,Swagger确实支持模型的多态性。如果你有一个带有“类型”字段的超级模型(例如),这是强制性的,并且能够设置MacBased和InterfaceBased变体之间的差异,那可能会有效。

您可以在此处找到有关多态性的更多信息 - https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md#527-model-object - 特别注意subTypes和discriminator字段。