J'utilise Swagger 2.0 et j'ai un problème pour envoyer plusieurs paramètres de publication. J'ai une erreur de fanfaronnade Operation cannot have a body parameter and a formData parameter
et je ne sais pas comment y remédier. Dans ma définition, j'ai un paramètre body et ce paramètre a besoin d'un format JSON mais d'un côté j'ai d'autres paramètres comme les fichiers à télécharger et le nom de fichier.
Comment puis-je envoyer les paramètres body et formData à la fois?
Voici la définition du service 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
Selon les spécifications swagger voir , type:body
et type:formData
ne peut pas coexister pour la même opération.
Une façon de résoudre le problème consiste à définir "données" comme paramètre de formulaire avec le type "fichier". Voici un exemple:
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
MISE À JOUR: les paramètres de corps et les paramètres de formulaire ne peuvent pas coexister: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject
Body - Charge utile ajoutée à la demande HTTP. Puisqu'il ne peut y avoir qu'une seule charge utile, il ne peut y avoir qu'un seul paramètre de corps. Le nom du paramètre body n'a aucun effet sur le paramètre lui-même et est utilisé uniquement à des fins de documentation. Puisque les paramètres de formulaire sont également dans la charge utile, les paramètres de corps et de formulaire ne peuvent pas exister ensemble pour la même opération.