Используя спецификацию OpenAPI, я хочу указать поле в модели данных со следующими сообщенными требованиями:
- Оно должно быть сериализовано как CSV-строка.
- Онодолжен содержать только значения из перечисления.
- Он должен содержать столько же или меньше элементов, сколько указано число.
Эта схема в конечном итоге приводит к раскрытию в пользовательском интерфейсе нашего приложения.
Мы достаточно легко можем общаться # 1 и # 2, но я не был уверен в идиоматическом способе общения # 3.Мое текущее решение использует свойство maxItems
для этого:
{
enum: ["beagle", "collie", "pitbull"],
format: "csv",
maxItems: 2,
type: "string"
}
Следующий лучший вариант выглядит как свойство pattern
для описания строки CSV, но это неочевидный намек на рендеринг.пользовательский интерфейс.Поскольку format
является открытым, лучше ли использовать пользовательский format
, такой как csv(2)
, который сообщает желаемое количество элементов?
К сожалению, я не могу изменить модель данных API для принятия *Массив 1023 * (в отличие от строки, сериализованной как CSV), которая была бы наиболее идеальным решением.
Как лучше всего описать такое поле с помощью OpenAPI?