J'utilise Swagger pour documenter mes services REST. Un de mes services nécessite le téléchargement d'un fichier CSV. J'ai ajouté ce qui suit à la section parameters
de ma définition d'API JSON:
{
"name": "File",
"description": "The file in Zip format.",
"paramType": "body",
"required": true,
"allowMultiple": false,
"dataType": "file"
}
et maintenant je vois l'option de téléchargement de fichier sur ma page Swagger UI. Mais lorsque je sélectionne un fichier et que je clique sur "essayer", j'obtiens l'erreur suivante:
NS_ERROR_XPC_BAD_OP_ON_WN_PROTO: opération illégale sur l'objet prototype WrappedNative dans jquery-1.8.0.min.js (ligne 2)
La page est en cours de traitement et je ne reçois aucune réponse.
Des idées qui pourraient être erronées?
enfin j'ai trouvé la réponse à cela, en fait auparavant il n'y a pas de support pour le téléchargement de fichiers , maintenant ils ont mis à jour swagger-ui.js fichier. Vous devez remplacer votre ancien par un nouveau et vous devez également définir ces propriétés sous Paramètres pour un paramètre particulier:
"paramType": "body",
"dataType": "file",
Dans Swagger 2.0 ( OpenAPI Specification 2. ), utilisez un paramètre de formulaire (in: formData
) avec le fichier type
défini sur . De plus, consumes
de l'opération doit être soit multipart/form-data
, application/x-www-form-urlencoded
ou les deux.
consumes:
- multipart/form-data # and/or application/x-www-form-urlencoded
parameters:
- name: file
in: formData # <-----
description: The uploaded file data
required: true
type: file # <-----
Dans OpenAPI Specification 3. , les fichiers sont définis comme des chaînes binaires, c'est-à-dire type: string
+ format: binary
(ou format: byte
, selon le cas d'utilisation). Le contenu d'entrée/sortie de fichier est décrit avec la même sémantique que tout autre type de schéma (contrairement à OpenAPI 2.0):
Demande en plusieurs parties, fichier unique:
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
# 'file' will be the field name in this multipart request
file:
type: string
format: binary
Demande en plusieurs parties, tableau de fichiers:
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
# The property name 'file' will be used for all files.
file:
type: array
items:
type: string
format: binary
Fichier POST/PUT directement (le corps de la demande est le contenu du fichier):
requestBody:
content:
application/octet-stream:
# any media type is accepted, functionally equivalent to `*/*`
schema:
# a binary file of any type
type: string
format: binary
Remarque: la sémantique est la même que pour les autres types de schéma OpenAPI 3.0:
# content transferred in binary (octet-stream):
schema:
type: string
format: binary
Plus d'informations:
Le mien semble fonctionner avec
"paramType": "formData",
"dataType": "file",