62

有谁知道如何在 OpenAPI 2.0 定义中定义可能的“枚举”值,以便它们显示在 Swagger UI 的“模型”选项卡中?此处的示例:httpsstatus ://petstore.swagger.io/#!/pet/addPet 具有该属性的枚举选项。如何在 OpenAPI 2.0 中定义这样的枚举?

4

4 回答 4

78

“枚举”在 OpenAPI 2.0 中的工作方式如下:

      {
        "in": "query",
        "name": "sample",
        "description": "a sample parameter with an enum value",
        "type": "string",
        "enum": [ "1", "2"],
        "required": true
      }

在 OpenAPI 3.0 中:

      {
        "in": "query",
        "name": "sample",
        "description": "a sample parameter with an enum value",
        "schema": {
          "type": "string",
          "enum": [ "1", "2"]
        },
        "required": true
      }

如您所见,有一个称为sample字符串类型的查询参数,并有一个枚举说明两个可能的值。在这种情况下,示例说明该参数是必需的,因此 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参数将被忽略。

最终,输出如下所示:

在此处输入图像描述

于 2014-12-22T16:43:31.457 回答
23

使用 YAML 语法更新它。

开放API 2.0:

parameters:
  - in: query
    name: sample
    description: a sample parameter with an enum value
    type: string
    enum:
      - 1
      - 2
    required: true

开放API 3.0:

parameters:
  - in: query
    name: sample
    description: a sample parameter with an enum value
    schema:
      type: string
      enum:
        - 1
        - 2
    required: true
于 2017-01-17T20:07:23.417 回答
-2

这应该有效:

{
    "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

于 2014-12-29T18:28:14.217 回答
-3

这不是确切的答案,但在他们添加此功能之前,它可能对您有用。

像这样简单地声明属性

"MyObject":{
   "properties":{
      "MyEnum":{
         "type":"Value1 or Value2 or Value3"
      }
   }
}

您的 ModelSchema 将显示{},但模型将显示MyEnum(Value1 or Value2 or Value3, optional)

于 2015-01-15T21:32:37.343 回答