web-dev-qa-db-ja.com

Swagger:列挙型定義をクエリパラメーターとして再利用

クエリ文字列のパラメータ定義の一部として、definitionsで定義された列挙型を使用したいと思います。

Swagger2.0スペックファイルのdefinitions部分でSwagger列挙型を定義しています。

OperationType:
  type: string
  enum:
  - registration
  - renewal

私は他の定義でそれへの参照を作成することができます:

Operation:
  type: object
  properties:
    name:
      type: string
    type:
      $ref: '#/definitions/OperationType'

パラメータがin: bodyの場合は、schemaタグを使用して参照できますが、in: queryの場合は参照できません。

    - name: operation
      in: body
      description: description
      schema:
        $ref: '#/definitions/OperationType'

代わりにschema:を削除し、enum:で参照を作成しようとしましたが、機能しません。

13
rdrey

これはOpenAPI3.0で可能です。すべてのパラメーターがschemaを使用するようになり、拡張により$refスキーマ。

openapi: 3.0.0
...
paths:
  /something:
    get:
      parameters:
        - in: query
          name: action
          schema:
            $ref: '#/components/schemas/OperationType'
      ...

components:
  schemas:
    OperationType:
      type: string
      enum:
        - registration
        - renewal
4
Helen

Swagger 2.0では、bodyパラメーター以外にモデル定義を使用する機能を制限しました。 definitionsセクションはスキーマを定義するために使用され、非オブジェクトを定義するためにも使用できます。ただし、これらの定義には、schemaキーワードが使用されている場合にのみアクセスできます。最初に述べたように、schemaは非本体パラメーターにはアクセスできないため、クエリまたはパスパラメーターで使用できないため、これらの定義を再利用する機能が制限されます。

オープン機能リクエスト 仕様の将来のバージョンで処理されるように要求するものがあります。

14
Ron