Ответ макета SwaggerHub возвращает 201, несмотря на пропущенные поля в запросе POST - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь смоделировать POST-запрос в SwaggerHub на основе следующего определения:

    post:
      summary: "Creates order"
      description: ""
      consumes:
      - application/json
      parameters:
      - name: "order"
        in: body
        description: "New order"
        schema:
          $ref: "#/definitions/Order"
      responses:
        201:
          description: "Order succesfully created."
        400:
          description: "Order can't be created"

Модель определяется как:

definitions:
  Order:
    type: object
    properties:
      id:
        type: string
        format: uuid
        example: d290f1ee-6c54-4b01-90e6-d701748f0851
      marketPair:
        type: integer
        format: "int64"
        example: "BTC_TRY"
      amount:
        type: number
        format: "int64"
        example: "1.3"
      price:
        type: integer
        format: "int32"
        example: "467"
      operationType:
        type: string
        description: "Type of operation"
        enum: 
        - "buy"
        - "sell"
        example: "buy"
      orderType:
        type: string
        description: "Order Type"
        enum:
        - "limit"
        - "market"
        - "stop"
        default: "limit"
        example: "limit"
    xml:
      name: "Order"

Каждый раз, когда я пытаюсьPOST плохой JSON с пропущенными полями или даже без JSON в теле. Я все еще получаю код 201, который совершенно не должен быть 201.

В моей конфигурации что-то не хватает или какие изменения нужны для этого?SwaggerHub, чтобы распознать мою спецификацию и начать проверять, соответствует ли полезная нагрузка требованиям спецификации для этой конечной точки?

1 Ответ

0 голосов
/ 28 мая 2018

Макет не проверяет наличие обязательных полей во входных данных, он просто возвращает самый низкий код состояния HTTP из тех, которые определены для операции - в вашем примере, состояние 201.

Из Документация SwaggerHub :

Обратите внимание, что макет не поддерживает бизнес-логику, то есть он не может отправлять конкретные ответы на основе ввода.

...

Макет генерирует статические ответы для каждой операции API на основе ее ответов и типов мультимедиа ответов, определенных в спецификации.

Если операция имеет несколько кодов ответов, макет возвращает ответ с наименьшим кодом состояния.Например, если операция имеет ответы 201, 202 и 400, макет возвращает ответ 201.

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

...