是否有人能够定义可能的' enum' swaggger版本2.0中的模型选项卡中的值?例如:http://petstore.swagger.wordnik.com/#!/pet/addPet有一个枚举选项,用于' status'属性,但该示例使用swagger 1.0版(根据JSON对象中定义的swagger版本)。我试图在版本2.0中实现相同但没有运气,不确定文档是否正确。
有什么暗示吗?
答案 0 :(得分:61)
“enum”就像这样:
{
"in": "query",
"name": "sample",
"description": "a sample parameter with an enum value",
"type": "string",
"enum": [ "1", "2"],
"required": true
}
正如您所看到的,有一个名为sample
的类型为string的查询参数,并且有一个枚举表明两个可能的值。在这种情况下,示例声明参数是必需的,因此UI不会显示空值作为选项。
对于最小工作样本,请尝试以下方法:
{
"swagger": "2.0",
"info": {
"title": "title",
"description": "descriptor",
"version": "0.1"
},
"paths": {
"/sample": {
"post": {
"description": "sample",
"parameters": [
{
"in": "query",
"name": "sample",
"description": "a sample parameter with an enum value",
"type": "string",
"enum": [
"1",
"2"
],
"required": true
}
],
"responses": {
"200": {
"description": "Successful request."
}
}
}
}
}
}
要在本地测试它,您可以在javascript中声明一个变量(例如spec
),并将其传递给SwaggerUi对象。
var spec = { ... };
window.swaggerUi = new SwaggerUi({
url: url,
spec: spec,
dom_id: "swagger-ui-container",
supportedSubmitMethods: ['get', 'post', 'put', 'delete'],
onComplete: function(swaggerApi, swaggerUi){
...
在这种情况下,url
参数将被忽略。
最终,输出如下:
我能够以这种方式做到这一点,但是你可以在下面的图片中看到每个参数创建了下拉列表:
我想要实现的是很好的Model / Model Schema选项卡,如下图所示,并为参数列出了可用的枚举。这是否可以在最新版本的Swagger中使用:
答案 1 :(得分:13)
使用YAML语法更新此内容:
in: query
name: sample
description: a sample parameter with an enum value
type: string
enum:
- 1
- 2
required: true
答案 2 :(得分:-1)
这应该有效:
{
"name": "bookingType",
"in": "path",
"type": "array",
"items": {
"enum": [
"packages", "accommodations"
]
},
"description": "lorem ipsum"
}
参考https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#itemsObject
答案 3 :(得分:-1)
这不是确切的答案,但它可能对您有用,直到他们添加此功能。
简单地声明属性如此
"MyObject":{
"properties":{
"MyEnum":{
"type":"Value1 or Value2 or Value3"
}
}
}
您的ModelSchema会显示{}
,但模型会显示MyEnum(Value1 or Value2 or Value3, optional)