例の追加
API 仕様には、以下の例を含めることができます。
- レスポンス MIME タイプ
- スキーマ (データモデル)
- スキーマ内の個々のプロパティ
例はツールやライブラリで使用できます。例えば、Swagger UI は入力スキーマの例に基づいてリクエストボディを自動入力し、一部の API モックツールは例を使用してモックレスポンスを生成します。
注: 例の値と default
の値を混同しないでください。例は値がどのようなものであるべきかを説明するために使用されます。デフォルト値は、リクエストで値が提供されない場合にサーバーが使用するものです。
スキーマ例
example
キーはスキーマの例を提供するために使用されます。例は個々のプロパティ、オブジェクト、およびスキーマ全体に対して指定できます。
プロパティの例
プロパティの例はインラインで指定できます。例の値はプロパティのタイプに準拠する必要があります。
1definitions:2 CatalogItem:3 type: object4 properties:5 id:6 type: integer7 example: 388 title:9 type: string10 example: T-shirt11 required:12 - id13 - title
プロパティまたはスキーマごとに複数の例の値はサポートされていません。つまり、次のようなものは使用できません。
1title:2 type: string3 example: T-shirt4 example: Phone
オブジェクトの例
タイプオブジェクトのプロパティには、そのオブジェクトのプロパティを含む複雑なインライン例を含めることができます。例はオブジェクトスキーマに準拠する必要があります。
1definitions:2 CatalogItem:3 type: object4 properties:5 id:6 type: integer7 example: 388 title:9 type: string10 example: T-shirt11 image:12 type: object13 properties:14 url:15 type: string16 width:17 type: integer18 height:19 type: integer20 required:21 - url22 example: # <-----23 url: images/38.png24 width: 10025 height: 10026 required:27 - id28 - title
配列の例
プリミティブの配列の例
1definitions:2 ArrayOfStrings:3 type: array4 items:5 type: string6 example:7 - foo8 - bar9 - baz
同様に、オブジェクトの配列は次のように指定されます。
1definitions:2 ArrayOfCatalogItems:3 type: array4 items:5 $ref: '#/definitions/CatalogItem'6 example:7 - id: 388 title: T-shirt9 - id: 11410 title: Phone
スキーマ全体の例
例がスキーマに準拠している限り、example
はスキーマ全体(すべてのネストされたスキーマを含む)に指定できます。
1definition:2 CatalogItem:3 type: object4 properties:5 id:6 type: integer7 name:8 type: string9 image:10 type: object11 properties:12 url:13 type: string14 width:15 type: integer16 height:17 type: integer18 required:19 - id20 - name21 example: # <----------22 id: 3823 name: T-shirt24 image:25 url: images/38.png26 width: 10027 height: 100
レスポンス例
Swagger では、レスポンスレベルで例を許可しており、各例は操作によって返される特定の MIME タイプに対応します。例えば、application/json
の例と、text/csv
の例などです。各 MIME タイプは、操作の produces
値のいずれかである必要があります。これは明示的であるか、グローバルスコープから継承されたものです。
1produces:2 - application/json3 - text/csv4responses:5 200:6 description: OK7 examples:8 application/json: { "id": 38, "title": "T-shirt" }9 text/csv: >10 id,title11 38,T-shirt
すべての例は自由形式であり、その解釈はツールとライブラリに委ねられています。
JSON と YAML の例
JSON と YAML は互換性があるため(YAML は JSON のスーパーセット)、どちらも JSON 構文または
1examples:2 application/json:3 {4 "id": 38,5 "title": "T-shirt"6 }
YAML 構文を使用して指定できます。
1examples:2 application/json:3 id: 384 title: T-shirt5 image:6 url: images/38.png
XML の例
XML レスポンスの例には特定の構文はありません。しかし、レスポンスの例は自由形式であるため、希望する任意の形式、またはツールでサポートされている形式を使用できます。
1examples:2 application/xml: '<users><user>Alice</user><user>Bob</user></users>'3
4examples:5 application/xml:6 users:7 user:8 - Alice9 - Bob10
11examples:12 application/xml:13 url: http://myapi.com/examples/users.xml
または、上記で説明したように、レスポンススキーマで例の値を指定することもできます。
テキストの例
すべてのレスポンス例は自由形式であるため、ツールやライブラリでサポートされている任意の形式を使用できます。例えば、次のようなもの
1examples:2 text/html: '<html><body><p>Hello, world!</p></body></html>'3 text/plain: Hello, world!
YAML で複数行の文字列を記述する方法については、Stack Overflow のこの記事も参照してください。
例の優先順位
異なるレベル(プロパティ、スキーマ、レスポンス)に複数の例がある場合、仕様を処理するツールは上位レベルの例を使用します。つまり、優先順位は次のとおりです。
- レスポンスの例
- スキーマの例
- オブジェクトと配列プロパティの例
- アトミックプロパティの例と配列項目の例
例と $ref
OpenAPI 2.0 の example
および examples
キーワードはインラインの例を必要とし、$ref
をサポートしていません。例の値はそのまま表示されるため、$ref
は $ref
という名前のオブジェクトプロパティとして表示されます。
OpenAPI 3.0 では例の参照がサポートされています。
お探しのものが見つかりませんでしたか? コミュニティに質問する
間違いを見つけましたか? お知らせください