Как описать поле множественного выбора с последовательным CSV-ограничением с использованием Open API? - PullRequest
1 голос
/ 18 июня 2019

Используя спецификацию OpenAPI, я хочу указать поле в модели данных со следующими сообщенными требованиями:

  1. Оно должно быть сериализовано как CSV-строка.
  2. Онодолжен содержать только значения из перечисления.
  3. Он должен содержать столько же или меньше элементов, сколько указано число.

Эта схема в конечном итоге приводит к раскрытию в пользовательском интерфейсе нашего приложения.

Мы достаточно легко можем общаться # 1 и # 2, но я не был уверен в идиоматическом способе общения # 3.Мое текущее решение использует свойство maxItems для этого:

{
    enum: ["beagle", "collie", "pitbull"],
    format: "csv",
    maxItems: 2,
    type: "string"
 }

Следующий лучший вариант выглядит как свойство pattern для описания строки CSV, но это неочевидный намек на рендеринг.пользовательский интерфейс.Поскольку format является открытым, лучше ли использовать пользовательский format, такой как csv(2), который сообщает желаемое количество элементов?

К сожалению, я не могу изменить модель данных API для принятия *Массив 1023 * (в отличие от строки, сериализованной как CSV), которая была бы наиболее идеальным решением.

Как лучше всего описать такое поле с помощью OpenAPI?

...