Swagger 2.0を使用していますが、複数の投稿パラメーターを送信するのに問題があります。 SwaggerエラーOperation cannot have a body parameter and a formData parameter
があり、それを修正する方法がわかりません。私の定義ではbodyパラメーターがあり、このパラメーターにはJSON形式が必要ですが、側面にはアップロードするファイルやファイル名などの他のパラメーターがあります。
BodyパラメータとformDataパラメータの両方を送信するにはどうすればよいですか?
Webサービスの定義は次のとおりです。
/updateDatas:
post:
summary: Upadate datas
description: |
Update datas
consumes:
- multipart/form-data
produces:
- application/json
parameters:
- name: firstFileName
in: formData
description: First file name.
required: true
type: string
- name: secondFileName
in: formData
description: Second file name.
required: true
type: string
- name: datas
in: body
description: Json object informations.
required: true
schema:
$ref: '#/definitions/Datas'
- name: firstFile
in: formData
description: First file .jpg
required: true
type: file
- name: clientFile
in: formData
description: Second file .jpg
required: true
type: file
tags:
- Application
responses:
'200':
description: Uploaded
schema:
$ref: '#/definitions/Upload'
'401':
description: Unauthorized Bad Token
swagger仕様による see 、type:body
およびtype:formData
は、同じ操作に対して一緒に存在することはできません。
問題を解決する1つの方法は、「ファイル」タイプのフォームパラメーターとして「データ」を設定することです。以下に例を示します。
parameters:
- name: petId
in: path
description: ID of pet to update
required: true
type: integer
format: int64
- name: additionalMetadata
in: formData
description: Additional data to pass to server
required: false
type: string
- name: file
in: formData
description: file to upload
required: false
type: file
更新:本体パラメーターとフォームパラメーターは共存できません: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject
Body-HTTPリクエストに追加されるペイロード。ペイロードは1つしか存在できないため、bodyパラメーターは1つしか存在できません。 bodyパラメーターの名前はパラメーター自体には影響せず、文書化の目的でのみ使用されます。フォームパラメータもペイロードに含まれているため、同じ操作に対してボディパラメータとフォームパラメータを一緒に存在させることはできません。