Кодировка не взрывая свойство в requestBody в swagger-ui - PullRequest
0 голосов
/ 04 января 2019

Параметр не разбирается на отдельные поля, и я не могу понять, почему.

Это мой yaml, использующий OpenApi 3.0

paths:
  /match/started:
    post:
      tags:
        - match
      summary: 'Callback for when a game has started.'
      operationId: 'App\Http\Controllers\Api\V1\MatchController::started'
      requestBody:
        description: 'Something something batman!'
        required: true
        content:
          multipart/form-data:
            schema:
              required:
                - match_uuid
              properties:
                game_uuid:
                  type: string
                player_uuids:
                  type: array
                  items:
                    type: string
              type: object
            encoding:
              player_uuids:
                style: form
                explode: true
      responses:
        200:
          description: 'success response'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Api_V1_Match_Started'

это завитокзапрос дарит мне ( BAD )

curl -X POST "https://editor.swagger.io/api/v1/match/started" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "game_uuid=test" -F "player_uuids=aaa,bbb,ccc"

, где вы можете увидеть последний параметр -F "player_uuids=aaa,bbb,ccc", и он должен быть-F "player_uuids=aaa" -F "player_uuids=bbb" -F "player_uuids=ccc"

, поэтому полный запрос должен выглядеть следующим образом:

curl -X POST "https://editor.swagger.io/api/v1/match/started" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "game_uuid=test" -F "player_uuids=aaa" -F "player_uuids=bbb" -F "player_uuids=ccc"

1 Ответ

0 голосов
/ 12 января 2019

В настоящее время нет способа определить ваш сценарий (составной запрос с разнесенным массивом) с помощью OpenAPI, поскольку поведение explode и style определено только для application/x-www-form-urlencoded, но не для multipart/*:

style
... Это свойство ДОЛЖНО игнорироваться, если тип носителя тела запроса не application/x-www-form-urlencoded.

explode
... Это свойство ДОЛЖНО игнорироваться, если тип носителя тела запроса не application/x-www-form-urlencoded.

Связанное обсуждение: Swagger UI:Отправка массива целочисленных элементов в формулярах

Возможно, вы захотите подать запрос на расширение с помощью спецификации OpenAPI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...