Схема Json, проверяющая длину одного поля на основе другого поля - PullRequest
0 голосов
/ 02 октября 2018

У меня есть схема JSON с двумя полями.fieldA и fieldB, fieldA - это перечисление, fieldB - это строка.Я хочу добавить несколько проверок длины поляB на основе значения поля A.

properties:
  fieldA:
    enum:
      - VAL1
      - VAL2
      - VAL3
  fieldB:
     type: string
      pattern: '^[<a-z>{10}|<a-z>{5}]$'

Я хочу убедиться, что если fieldA равно VAL1, то длина fieldB должна быть 5, иначе длина fieldBдолжно быть 10. Как добавить такие проверки?

1 Ответ

0 голосов
/ 04 октября 2018

Ответ зависит от того, используете ли вы OpenAPI 2.0 (swagger: '2.0') или OpenAPI 3.0 (openapi: 3.0.0).

OpenAPI 2.0

OpenAPI 2.0 не поддерживает условные зависимости.Вы можете только устно задокументировать такие зависимости в description.

OpenAPI 3.0

. Вы можете использовать oneOf для описания условных зависимостей в OpenAPI 3.0, аналогично тому, как вы это делали в JSONСхема.Приведенный ниже пример основан на ответах на условную зависимость схемы JSON от значения .

Примечание. oneOf является частью спецификации OpenAPI (например, вы можете написать определения API, которые включаютoneOf), реальная поддержка инструментов для oneOf может отличаться.

type: object
required:
  - fieldA
properties:
  fieldA:
    type: string
    enum:
      - VAL1
      - VAL2
      - VAL3
  fieldB:
    type: string
    pattern: '^[a-z]+$'
oneOf:
  # If fieldA = VAL1, then fieldB must be 5 chars long
  - properties:
      fieldA:
        enum: [VAL1]
      fieldB:
        minLength: 5
        maxLength: 5
  # Otherwise (if fieldA = VAL2 or VAL3) fieldB must be 10 chars long
  - properties:
      fieldA:
        enum: [VAL2, VAL3]
      fieldB:
        minLength: 10
        maxLength: 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...