Как определить Enum как параметры запроса в спецификации OpenAPI - PullRequest
0 голосов
/ 29 марта 2019

Я хочу определить значение перечисления в параметре строки запроса функции в спецификации OpenAPI.

Вот пример того, как я указываю параметр в моей спецификации OpenAPI (yaml):

openapi: 3.0.0
info:
  description: Vends sodas
  version: 1.0.0
  title: VendingMachineService
paths:
  /soda/{bill}:
    get:
      summary: Provides a soda for a provided amount of money
      description: Provides a soda for a provided amount of money
      operationId: getSoda
      parameters:
      - name: bill
        in: path
        description: Money (e.g. one, two, five)
        required: true
        schema:
          $ref: "#/components/schemas/Bill"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Result"
        "404":
          description: Templates for Source not found
servers:
- url: http://localhost:8080/
components:
  schemas:
    Bill:
      type: string
      enum:
      - one
      - two
      - five
    Result:
      type: string

Ключевой частью спецификации OpenAPI является то, что я определяю перечисление в объекте схемы внизу, печатаю строку и ссылаюсь на него в разделе параметров функции, также определяя его как часть пути/ {bill}

Затем я использую openapi-generator для генерации пружинного сервера:

openapi-generator generate -i ~/vending-machine.yaml -g spring -o ~/output

Затем я раскручиваю сервер (импортирую проект в Intellij и запускаю в подпружиненной загрузке)конфигурации) и перейдите к localhost: 8080 /, чтобы открыть интерфейс Swagger.Я пытаюсь использовать API и получаю следующую ошибку:

{"timestamp": "2019-03-29T15: 43: 14.737Z", "status": 400,
"error":" Bad Request "," message ":" Не удалось преобразовать значение типа 'java.lang.String' в требуемый тип 'org.openapitools.model.Bill'; вложенным исключением является org.springframework.core.convert.ConversionFailedException: Не удалось преобразовать тип [java.lang.String] в тип [@ javax.validation.constraints.NotNull @ io.swagger.annotations.ApiParam @ javax.validation.Valid @ org.springframework.web.bind.annotation.RequestParamorg.openapitools.model.Bill] для значения 'null'; вложенным исключением является java.lang.IllegalArgumentException: нет константы перечисления org.openapitools.model.Bill.null "," path ":" / soda /% 7Bbill% 7D "}

(501 не реализовано, ожидается)

Как правильно определить параметры запроса и перечисление в спецификации OpenAPI для использования значений перечисления?

...