OAS 2 このページは、OpenAPI Specification ver. 2 (旧Swagger)に適用されます。最新バージョンについては、OpenAPI 3ページをご覧ください。
リクエストボディの記述
POST、PUT、PATCHリクエストには、JSONやXMLデータなどのリクエストボディ(ペイロード)を含めることができます。Swaggerでは、リクエストボディはボディパラメータと呼ばれます。操作には他のパラメータ(パス、クエリ、ヘッダー)が存在する場合がありますが、ボディパラメータは1つだけ存在できます。
注:application/x-www-form-urlencoded
およびmultipart/form-data
リクエストのペイロードは、ボディパラメータではなく、フォームパラメータを使用して記述されます。
ボディパラメータは、操作のパラメータセクションで定義され、以下が含まれます。
in: body
- ボディデータの型と構造を記述する
スキーマ
。データ型は通常はオブジェクトですが、プリミティブ(文字列や数値など)または配列にすることもできます。
- オプションの
説明
。
- ペイロード名。必須ですが、無視されます(ドキュメント目的でのみ使用されます)。
オブジェクトペイロード(JSONなど)
多くのAPIは、JSONなどのオブジェクトとしてデータを送信します。オブジェクトの
スキーマ
は、
type: object
と、そのオブジェクトのプロパティを指定する必要があります。たとえば、次のJSONボディを持つ
POST /users
操作
{
"userName": "Trillian",
"firstName": "Tricia",
"lastName": "McMillan"
}
は次のように記述できます。
paths:
/users:
post:
summary: Creates a new user.
consumes:
- application/json
parameters:
- in: body
name: user
description: The user to create.
schema:
type: object
required:
- userName
properties:
userName:
type: string
firstName:
type: string
lastName:
type: string
responses:
201:
description: Created
注:ボディパラメータの名前は無視されます。ドキュメント目的でのみ使用されます。よりモジュール化されたスタイルにするために、スキーマ定義をグローバルな
definitions
セクションに移動し、
$ref
を使用して参照できます。
paths:
/users:
post:
summary: Creates a new user.
consumes:
- application/json
parameters:
- in: body
name: user
description: The user to create.
schema:
$ref: '#/definitions/User' # <----------
responses:
200:
description: OK
definitions:
User: # <----------
type: object
required:
- userName
properties:
userName:
type: string
firstName:
type: string
lastName:
type: string
プリミティブボディ
単一の値だけをPOST/PUTしたいですか?問題ありません。ボディスキーマタイプを文字列や数値などのプリミティブとして定義できます。生のリクエスト
POST /status HTTP/1.1
Host: api.example.com
Content-Type: text/plain
Content-Length: 42
Time is an illusion. Lunchtime doubly so.
Swagger定義
paths:
/status:
post:
summary: Updates the status message.
consumes:
- text/plain # <----------
parameters:
- in: body
name: status
required: true
schema:
type: string # <----------
responses:
200:
description: Success!
お探しの情報が見つかりませんか? コミュニティに質問する
間違いを見つけましたか? お知らせください