gpt4 book ai didi

javascript - 拥有不同模型的多个 body

转载 作者:行者123 更新时间:2023-11-30 10:12:01 28 4
gpt4 key购买 nike

大家好,我是新来的 Swagger ,卡在一个点上,需要专家的帮助。这就是我需要的

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

我可以通过制作两个 process_models 并像这样基于它们定义我的 body 来做到这一点

>  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 '
}
}

});

然后 body 像这样

>  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 中看到两个正文文本框。问题是,我填充的任何主体都会尝试验证 MacBased 的第一个模型的 JSON,因此第一个主体数据正常,当我尝试使用第二个主体发布数据时,它在解析时失败。

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

最佳答案

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

但是,Swagger 确实支持模型的多态性。如果您有一个带有“类型”字段(例如)的 super 模型,该字段是强制性的并且能够设置 MacBased 和 InterfaceBased 变体之间的差异,那是可行的。

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

关于javascript - 拥有不同模型的多个 body ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26005529/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com