Запрос не отображается в вызове - PullRequest
0 голосов
/ 04 июня 2019

Когда я определяю requestBody, он не отображается в документах о чванстве.Я хочу создать массив изображений и загрузить один файл для файла gpx в swagger.Как я могу добиться, чтобы requestBody показывал так же, как свойство параметров?

До сих пор я пытался объявить его, как показано ниже.Я не пытался сделать из него компонент requestBodies и вызывать эту ссылку, но я не думаю, что в этом проблема.

/**
 * @openapi
 * /routes:
 *   post:
 *     description: 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
 *             encoding:
 *               images:
 *                 contentType: image/png, image/jpeg
 *     parameters:          
 *       - name: name
 *         description: Name of the route.
 *         in: query
 *         required: true
 *         type: string
 *         example: Utrecht naar Den Bosch
 *       - name: description
 *         description: Description of the route.
 *         in: query
 *         required: true
 *         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
 *         type: integer
 *         minimum: 0
 *         example: 1
 *       - name: rating
 *         description: The rating the route has been given.
 *         in: query
 *         required: false
 *         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
 *         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
 */

Согласно найденным примерам, именно так выобъявить запрос телом.Но значения не отображаются в файле документации Swagger, как показано здесь: Swagger docs page

1 Ответ

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

3.0.12 является очень старой версией Swagger UI и не поддерживает OpenAPI 3.0 (поддержка OAS3 была добавлена ​​в Swagger UI v. 3.1 ).Вам нужно обновить ваш Swagger UI.Последняя версия (3.22 на момент написания) правильно отображает тела запросов OpenAPI 3.0.

Есть также несколько проблем с аннотациями:

  • В теле запроса, encoding должен находиться на том же уровне, что и schema, а не внутри schema.

  • Определения типа параметра должны быть заключены в schema, например:

    *       - 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: 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
    
...