Здравствуйте, ·, Вы писали:
·>Это видимо только ты не понял у кого проблемы. Проблема у Ночного Смотрящего, с которым я тут непосредственно беседую. Именно он перебрал кучу кодогенераторов, плюнул и предложил писать всё ручками.
Сам подумай, что это значит — кодогенераторы в общей массе отстой. И именно ты топишь за использование тех, которые отстой.
P>>Если это про OpenApi, то с ним большие проблемы. О чем и речь.
·>Т.е. твой вариант — не использовать никакой openapi и весь код писать руками, как деды завещали и Ночной Смотрящий делает. Так? Или какую альтернативу ты предлагаешь?
Очевидно, что не так. Я пишу — использовать проверенную оттестированую либу, но тебе мерещится "писать весь код руками"
Похоже, ты снова начал валять дурака и откровенно передергивать.
P>>При чем независимо от того, генерируешь ли ты манифест, или задаёшь руками.
·>Очень даже зависимо. Вручную сделанный openapi проще поддерживать во вменяемом состоянии.
Как мы выяснили, у OpenAPI проблема не с манифестом, а с кодогенерацией.
Поскольку кодогенераторы для OpenAPI кривые, шо сабля, то тебе надо точно знать фичи кодогенератора, и избегать лишнего в манифесте
В противном случае лишняя строчка в манифесте или сломает клиент, или сломает сервер, или просто проигнорится
И то, и другое, и третье есть проблема
Поэтому в своём уме никто манифест OpenAPI руками не набивает.
P>>Заявление "на проде проблем нет" сводится к неполному профессионализму. Лучше отказаться от предположений "у нас на проде проблем нету", и рассмотреть риски и способы управления ими.
·>Ты как-то упустил слово _таких_. Этот подход решает вполне определённый класс проблем. Но, ясен пень, не решает все проблемы.
А раз не решает все, то часть останутся на проде. Гы-гы. Откуда и следует, что нужно тестировать и прод. Например — при обновлении 3rd party зависимостей.
P>>Соответственно если у тебя есть тесты прода — пусканул после обновления их сервиса, выявил проблемы, и до того, как юзеры проснулись, уже всё пофиксано.
·>Чтобы пускануть тесты в проде и выявить эту проблему, в этом самом проде уже должно оказаться их обновление.
Алё — они поменяли свой сервис глядя в свои тесты. И подломали некоторые запросы твоего сервиса.
·>И выкатил в прод без тестов интеграции с вами? Так тут проблема в том, что кто-то что-то выкатывает в прод без тестов.
Это норма, а не проблема. Крупные вендоры апи имеют десятки и сотни тысяч консумеров. Ты для них один из сотен тысяч.
Например, ты заюзал sendgrid или mailgun. Они трохи обновились. Ты же фанат емейлов и всё такое. И вот после их обновления часть ваших юзеров перестала получать уведомления. Гы-гы.
Пускаешь тесты прода и видишь, что емейлы таки глючат. Опаньки!
P>>То есть, вы не смогли промигрировать код на нужную версию яп — всё, большой проект, оло-ло-ло-ло!
·>Что значит "не смогли"? Тут всё просто. Бюджета нет, проект в состоянии EoL, команду разогнали — никто мигрировать не будет. Ты в большой организации никогда не работал? +100к работников чтобы...
Тогда это не признак большого проекта, а скорее признак тухлого проекта, который еле держится на плаву.
·>Совершенно верно, и не поспоришь — лучше быть здоровым и богатым, чем больным и бедным. Ну так бери проверенное протестированное решение и в contract-first с openapi, я разрешаю.
Мы уже выяснили — бредогенераторов для openapi 100500 единиц, и почти все из них или не подходят, или их нельзя использовать
Типичный кейс — понадобилась некоторая фича, а кодогенератор не поддерживает, приплызд
P>>В лучшем случае, я уже сказал, генератор не нужен. Он необходим только для экспорта АПИ.
·>Продолжай. Что за экспорт АПИ? И что с результатом экспорта потом делать?
Экспорт АПИ — это ты предоставляешь АПИ своего сервиса внешним консумерам.
P>>Ты описал типичную картину для OpenAPI, независимо от того, генеришь манифест, или пишешь руками.
·>Очень даже зависимо. Т.к. цепочка жонглирования становится короче и количество сущностей уменьшается (не нужно писать метаданные, не нужен их парсер и схемогенератор).
Теоретик?
1 Тебе надо держать в уме возможности кодогенератора. Заюзал ты ResponseHeaders, а у тебя такое не поддерживается. Гы-гы.
2 Метаданные парсить не нужно, это типизированый интерфейс, по которому генерить что угодно легко и просто.
3 Вместо схемогенератора у тебя кодогенератор, при чем — два штуки, каждый со своими особенностями, клиент и сервер.
P>>·>Схема должна быть проще:
P>>·>spec --[generator1]--> code1
P>>·>spec --[generator2]--> code2
P>>Если под spec взять OpenAPI, то получим геморрой, который ты сам же описал выше.
·>Что значит "взять"? У тебя оно уже вроде есть, но генерится.
"Взять" — подставляем вместо spec в твоей форумуле успеха OpenAPI, и проверяем твою гипотезу
И оказывается, что именно здесь получается бред, который ты сам же и описал.
P>>Приплызд!
·>А абсолютно всемогущий безбажный генератор спеки из развешанных метаданных вам бог ниспосылает. Счастливчики, не всем так везёт, вот Ночному Смотрящему и тем погромистам из restapi.moedelo.org не повезло, например.
С генератором спеки гораздо проще. Кодогенератор это намного более сложная задача.
Я например писал и то, и другое. Кодогенератор это хтонический ужос по сравнению с генерацией джсон по метаданным.
P>>Это проблема — пока найдешь нужную комбинацию, вспотеешь. А если у тебя уже готовый проект, то втиснуть него нечто иное не факт, что выйдет.
·>А сгенерить нечто полезное почему выйдет из произвольно написанного готового проекта на произвольном фреймворке?
Генерится не из произвольно написаного кода, а из метаданных которые предоставляются либой. Они по своей природе навешиваются на что угодно без проблем.
P>>И тут приходится писать кодогенератор самому, т.к. другого выхода нет.
·>Так же придётся писать спекогенератор, что Ночной Смотрящий рассуждал 2 года назад: "большая работа, включающая допиливание swashbuckle на предмет добавления в swagger.json дополнительной метаинформации о семантике методов".
Он пишет про другое — ты внимательно прочитай.
P>>С чего ты взял, что доработаешь? Фантазии? Использовать или доработать напильником мешает
·>С того, что это тупо шаблончик типа mustache, результат работы которого надёжно проверяется компилятором.
компилер говорит тебе, что выхлоп компилируется. А что выхлоп нерабочий или содержит не то, или не содержит того, никакой компилер тебе не подскажет.
> Сделать работающее решение очень просто, именно поэтому "генераторов кода для него вагон и маленькая тележка, все поддерживают разные архитектуры клиента-сервера".
Наоборот — генераторы приходится писать, потому что они в основной массе ни на что не годятся. Берешь генератор кода, и вдруг оказывается, что в генеренном коде нужен хук для инструментирования.
А его нет. Гы-гы. Надо писать новый генератор, потому что допилить напильником не выходит из за GPL лицензии.
> На порядок проще, чем придумывать и развешивать метаданные, добавлять дополнительную метаинформацию, обрабатывать всё это дело и пытаться сгенерить хоть что-то полезное из этого, именно поэтому лишь "чисто теоретически я знаю как все таки сделать нормальный генератор".
Еще раз — не надо придумывать метаданные. Алё, ты вообще читаешь? Берем проверенную либу, закладываемся на её возможности.
P>>1. например лицензия, GPL какой
P>>2. архитектура генератора, где всё огорожено забором
P>>3. сложность этого генератора, например, отсутствие тестов. Гы-гы.
·>Ровно эти же проблемы могут быть и у твоего схемогенератора.
Нисколько. Схемогенератор это простая вещь по сравнению с кодогенератором.
P>>То есть, твоя "доработка" по сложности даст примерно то же, что генерация JSON по метаданным. Примерно та же сложность сопровождения, примерно то же количество тестов.
·>Это неправда. Более того, тебе придётся такой генератор писать в любом случае, если ты хочешь хоть как-то использовать спеку.
Снова теоретизирования
Нам нужно проверить, что схема валидная. Мы берем готовый тул, который умеет слать запросы по такой спеке, и пишем под него тесты. Здесь у нас ровно 0 генеренного кода.
> Единственное как можно "решить" эту проблему, это сваять какую-нибудь хрень, вывалить сгенерённую спеку клиентам и сказать, что это их проблема что они потом будут с ней делать. Это именно то, что сделали погромисты тутАвтор: varenikAA
Дата: 07.09.20
.
Ты высек сам себя — по твоей ссылке пример работы
бредо кодогенератора. Этот бредогенератор такое нагенерил, что ни руками вычистить, ни внятно использовать нельзя.