クエリ文字列のパラメータ定義の一部として、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:
で参照を作成しようとしましたが、機能しません。
これは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
Swagger 2.0では、body
パラメーター以外にモデル定義を使用する機能を制限しました。 definitions
セクションはスキーマを定義するために使用され、非オブジェクトを定義するためにも使用できます。ただし、これらの定義には、schema
キーワードが使用されている場合にのみアクセスできます。最初に述べたように、schema
は非本体パラメーターにはアクセスできないため、クエリまたはパスパラメーターで使用できないため、これらの定義を再利用する機能が制限されます。
オープン機能リクエスト 仕様の将来のバージョンで処理されるように要求するものがあります。