用不同的模型交换多个实体
Swagger multiple bodies with different model
大家好,我刚开始招摇撞骗,一度陷入困境,需要专家的帮助。这就是我需要的
我想写一个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("基于接口",
{'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中看到两个正文文本框。问题是,我填充的swagger中的哪一个主体试图验证MacBased第一个模型的JSON,所以第一个主体数据很好,当我尝试使用第二个主体发布数据时,解析失败。
知道如何使用该实体的指定模型解析数据吗?感谢
Swagger不支持多个主体参数声明。您最多可以有一个实体参数。
然而,Swagger确实支持模型的多态性。如果你有一个超级模型,其中有一个"类型"字段(例如),这是强制性的,并且能够设置基于MacBased和基于InterfaceBased变体之间的差异,那么这是可行的。
你可以在这里找到更多关于多态性的信息-https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md#527-model对象-特别注意subTypes和discriminator字段。
相关文章:
- 如何使用offer/answer交换来自两个对等连接的流
- 简单的ES6承诺问题-交换解决和拒绝参数
- 微风得到的是实体而不是对象的集合
- 我可以通过JQuery将CSS类交换为一个特殊的元素集吗
- 简单的交换程序无法使用javascript
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- Box2D多个实体的一个夹具
- 在表单OnChange中交换数字顺序
- 在MSCRM 2015中使用javascript限制多实体查找
- 有更好的方法吗?(递归解析HTML unicode实体)
- 通过Javascript将HTML中的电话号码与URL参数进行交换
- 如何使用angularJS从json的对象数组中显示和计数实体
- 将文档实体传递给JavaScript函数
- fullpage.js和物化.js;使用实体侧导航禁用鼠标滚动
- 用于交换两个变量的 JavaScript 函数
- javascript将html实体条目发布后的下一个字母大写
- 用javascript交换img标记
- 如何转义字符串中的html实体
- Famo.us Js-将实体(粒子)设置到位置的动画
- 用不同的模型交换多个实体