web-dev-qa-db-ja.com

swagger.ioで列挙型を定義するには?

誰もがswagggerバージョン2.0の「モデル」タブで可能な「enum」値を定義できましたか?ここの例: http://petstore.swagger.wordnik.com/#!/pet/addPet には 'status'プロパティのenumオプションがありますが、その例ではswaggerのバージョン1.0を使用しています(swaggerによる) JSONオブジェクトで定義されたバージョン)。私はバージョン2.0でも同じことをしようとしましたが、運がありません。ドキュメントがこのために正しいかどうかはわかりません。

これに関するヒントはありますか?

43
eloleon

「enum」は次のように機能します。

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

ご覧のとおり、文字列型のsampleと呼ばれるクエリパラメータがあり、2つの可能な値を示す列挙型があります。この場合、サンプルではパラメーターが必須であることが示されているため、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パラメーターは無視されます。

最終的に、出力は次のようになります。

enter image description here

私はこの方法で大丈夫でしたが、ドロップダウンを作成した各パラメーターについて以下に添付されている画像で見ることができます: enter image description here

私が達成したいのは、以下の画像のように、パラメーターに利用可能な列挙型がリストされたニースモデル/モデルスキーマタブです。これはSwaggerの最新バージョンで可能ですか?

enter image description here

62
Ron

YAML構文でこれを更新する:

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