Массив изображений отправляется через параметры вместо formData, как это изменить? - PullRequest
2 голосов
/ 05 июня 2019

Когда я выполняю вызов в спецификации OpenAPI, он помещает массив файлов в раздел параметров вместо formData. Таким образом, он читается как строка, а не как массив.

Я пытался сделать тот же запрос в Почтальоне. В Почтальоне вызов работает, но в swagger он помещается в раздел параметров следующим образом: "[object File]". В консоли браузера я попытался увидеть, что он отправляет, но это только массив. Поэтому я не знаю, почему он преобразуется в строку или почему он помещается в параметры вместо formData.

Это openapi yaml:

/**
 * @openapi
 * /routes:
 *   post:
 *     summary: Create a route
 *     tags:
 *       - Routes
 *     security:
 *       - CustomToken: []
 *     requestBody:
 *       content:
 *         multipart/form-data:
 *           schema:
 *             type: object
 *             required:
 *               - images
 *               - track
 *             properties:
 *               images:
 *                 type: array
 *                 minItems: 1
 *                 maxItems: 3
 *                 items:
 *                   type: string
 *                   format: binary
 *               track:
 *                 type: string
 *                 format: binary
 *     parameters:          
 *       - name: name
 *         description: Name of the route.
 *         in: query
 *         required: true
 *         schema:
 *           type: string
 *           example: Utrecht naar Den Bosch
 *       - name: description
 *         description: Description of the route.
 *         in: query
 *         required: true
 *         schema:
 *           type: string
 *           example: Een route die langs de prachtigste punten gaat op de route van utrecht naar Den Bosch.
 *       - name: price
 *         description: The price of the route using the purchasable coins as the currency.
 *         in: query
 *         required: true
 *         schema:
 *           type: integer
 *           minimum: 0
 *           example: 1
 *       - name: rating
 *         description: The rating the route has been given.
 *         in: query
 *         required: false
 *         schema:
 *           type: integer
 *           minimum: 1
 *           maximum: 5
 *           example: 5
 *       - name: tags
 *         description: The tags that define if the route contains dikes, forests, mountains or cities. To select multiple values hold ctrl and click on the values you want.
 *         in: query
 *         required: true
 *         schema:
 *           type: array
 *           minItems: 1
 *           maxItems: 4
 *           uniqueItems: true
 *           items:
 *             type: string
 *             enum:
 *               - Dike
 *               - Forest
 *               - Mountain
 *               - City
 *           example:
 *             - Dike
 *             - Forest
 *     responses:
 *       200:
 *         description: succesfully created a route
 */

Параметры Как вы можете видеть на этом рисунке, раздел параметров содержит изображения.

File / formData изображения должны быть здесь.

1 Ответ

1 голос
/ 05 июня 2019

Ваши аннотации выглядят правильно.Это проблема с Swagger UI - в настоящее время (по состоянию на июнь 2019 года) он не поддерживает многочастные запросы OAS3, содержащие файловые массивы.Следите за этой проблемой для обновления статуса:
https://github.com/swagger-api/swagger-ui/issues/4600

...