discriminator: action
required:
- action
properties:
action:
type: string
enum:
- MyDefinitionActionOne
- MyDefinitionActionTwo
MyDefinitionActionOne:
allOf:
- $ref: '#/definitions/MyDefinitionAction'
- type: object
# ...
MyDefinitionActionTwo:
allOf:
- $ref: '#/definitions/MyDefinitionAction'
- type: object
#...
Не показывает в UI модели MyDefinitionActionOne и MyDefinitionActionTwo.
Но главное - их не есть Postman. Тьфу пропасть. Модель данных в json руками что-ли писать в итоге?
задача-то твоя в чем?
1. Две разные валидации в зависимости от поля (кнопки по факту) 2. Составление json в ручную для теста сложное, а все инструменты отказались понимать полиморфный тип для визуализации
ты тут в энам строку будто объект хочешь засунуть...
И будто бы спецификация Open API так позволяет. Та-да. И главное - go-swagger очень внезапно по спецификации генерирует рабочий объект https://goswagger.io/use/spec/discriminated.html
ты же понимаешь, что полиморфизм для API - абсолютное зло?
Это спека
1. Не очень понятно как отработать 2 кнопки 2. Куча ситуаций со списками похожих
1. почему ты вообще мыслишь в терминах кнопок? ты во фронтендеры подался? 2. списки похожих - это одно, а полиморфизм - другое.
Гы гы) добро пожаловать в клуб 😂 Между спецификацией и реальными возможностями находится буквально пропасть
1. Хорошо. У меня разная верификация в зависимости от некоего признака. 2. Нет, не понимаю. Хорошо, списки чего то,что похоже только id
разная бизнес логика или просто разные реквесты?
Хорошо. Это интересно
у меня есть к тебе радикальное предложение: proto+protovalidate+grpc-gateway+grpc ко всему этому надо приложить buf и генерацию сваггера из proto у нас будет об этом доклад на конфе, но тебя я и сейчас готов проконсультировать
а можно ссылку на доклад, чтоб послушать?
Еще не состоялся
А что за конфа? Когда будет ?
Прогуглите голанг конф, там есть анонс, дату не помню
Это ты усложняешь. Хрен с ним с (1), там лучше действительно сделать отдельным ендпойнтом с разными definition, совпадающим по полям. А вот со списком засада. Последовательный список текста и картинок.
Ты хочешь разом все файлы загрузить? У тебя действительно там процесс верификации документов? Я просто думал, что ты ошибся терминами
2. Сделать объект, где каждый другой объект - необязательное поле. Но если он есть, то там проверка уже обязательная. Спасибо, доктор
Да причём тут файлы. Просто вразнобой текст и ссылки на картинки
[ { "data": "http://url/image.jpeg", "type": "image" }, { "data": "my-text", "type": "text" } ]
Супер. И как это выглядит в swagger.yaml? И во что должно превратиться в Go?
Ну вроде стандартная структура, которая соенерится гошкой, все поля одинаковые, только значения разные
Стоп. Я хочу использовать такие плюшки swagger как "я написал проверку за тебя"
Вы можете определить внутри самого объекта, какие поля required/no-required, а далее его встраивать в другие объекты как no-required То есть, если объект передаётся, то его поля будут проверяться (но здесь конечно нужно, чтобы его передавали явно)
Я подумал, что речь про валидацию в го. Зачем в свагере валидация такая?
Потому что он её делает за меня?
Хорошо, а если набор полей разный?
Либо разные эндпоинты, либо общий внутри data сделать возможность отправить всевозможные наборы полей. Например для image один набор в {}, для текста другой и тд и также по типу выбирать какое поле парсить
Если набор полей разный - то это разные объекты, очевидно же)
Как сделать их список?
Определить в объекте
Список чего? Объектов или полей?
type: object required: - id properties: id: type: string format: uuid objone: $ref: '#/definitions/ObjOne' objtwo: $ref: '#definitions/ObjTwo' definitions: ObjOne: type: object required: - field1 properties: field1: type: integer ObjTwo: type: object required: - field1 - field2 - field3 properties: field1: type: string field1: type: integer field1: type: bool типа так
И в чём здесь заключается проблема?
И единственная проблема которая остаётся - не прилетело ничего. Но это вручную проверяется быстрее, чем мучения с allOf. Да, спасибо
Можно обернуть в ещё один объект, который в запросе будет required
А почему это проблема? object, который вы написали выше, в запросе делаете required
Вы считаете вершиной применения дженериков функции must и pointer и при этом даёте консультации? Надеюсь бесплатные?
Ух-ты, тот самый Сергей?
Какие дженерики — такие и вершины применения хД
что с ними не так?
Обсуждают сегодня