MyObjectをパラメーターとして取るパスを定義します。 MyObjectには、猫と犬のプロパティがあります。これらにはデフォルト値があります。 swagger-editorでは、例にはデフォルト値が表示されていませんが、try-it-outは正しいデフォルトでMyObjectを作成します。
Swagger-uiでは、Modelsでデフォルトを確認できますが、APIでは確認できません。これらのデフォルトを設定する方法はありますか? swagger: '2.0' info:title:パラメータの説明としてデフォルトのプロパティを持つオブジェクトを渡す:etc version: "Draft 0.1.1" Host:example.com basePath:/ produces:-application/json
paths:
/myobject:
post:
summary: |
post an object.
parameters:
- name: myObject
in: body
required: true
schema:
type: array
items:
$ref: '#/definitions/MyObject'
responses:
200:
description: OK
definitions:
MyObject: # move to/models/model.yml
type: object
description: Contains default properties
required:
- cats
- dogs
properties:
cats:
type: number
default: 9
dogs:
type: string
default: "fido"
default
の使用法が間違っています。代わりにexample
が必要になるでしょう。
default
はオプションのフィールドでのみ使用され、サーバー側で処理されますです。つまり、クライアントがペイロードに値を指定しない場合、サーバーはdefault
値を使用します。
このUser
モデルを考えてみましょう。
definitions:
User:
type: object
required:
- username
properties:
username:
type: string
role:
type: string
enum:
- user
- poweruser
- admin
default: user
role
プロパティはオプションであり、デフォルトはuser
です。したがって、クライアントがrole
なしでペイロードを送信する場合:
{
"username": "bob"
}
サーバーはrole
= user
を想定します。
あなたの場合、フィールドの値の例を提供したいようです。これがexample
キーワードの目的です。
definitions:
MyObject:
type: object
description: Contains default properties
required:
- cats
- dogs
properties:
cats:
type: number
example: 9 # <---
dogs:
type: string
example: fido # <---
デフォルトには2種類あるようです。
クライアント側のデフォルトの場合、required = Trueを設定し、enumを唯一の許可された値に設定することで定義できます。以下のこの例を参照してください。
swagger: "2.0"
info:
title: "some api"
description: "a description"
version: "1.0.0"
Host: "example.com"
basePath: "/api"
schemes:
- "http"
paths:
/myobject:
post:
summary: |
post an object.
parameters:
- name: myObject
in: body
required: true
schema:
type: array
items:
$ref: '#/definitions/MyObject'
responses:
200:
description: OK
definitions:
MyObject:
type: object
description: Contains default properties
required:
- cats
- dogs
properties:
cats:
type: number
enum:
- 9
dogs:
type: string
enum:
- fido
Swagger 2.0は、サーバーまたはクライアントの参照フレームを指定せずにデフォルトのパラメーターを最初に記述したため、デフォルトのパラメーターは少し混乱します。
Swagger 2.0仕様 スキーマのデフォルトを次のように定義します
default (Unlike JSON Schema, the value MUST conform to the defined type for the Schema Object)
default - The default value represents what would be assumed by the consumer of the input as the value of the schema if one is not provided. Unlike JSON Schema, the value MUST conform to the defined type for the Schema Object defined at the same level. For example, if type is string, then default can be "foo" but cannot be 1.