Здравствуйте, Pauel, Вы писали:
P>>>Очевидно, что не так. Я пишу — использовать проверенную оттестированую либу, но тебе мерещится "писать весь код руками"
P>·>Угу. Так используй проверенную оттестированную либу для кодогенерации. Кто запрещает-то?
P>Отсутствие таких в природе с силу принципиальной сложности кодогенерации.
Я ими пользовался. Работает хорошо, если схема вменяемая.
P>·>И чем поможет схемогенератор?
P>Генератор схемы это не какая нибудь сложная вещь, легко покрывается тестами, в отличие от кодогенератора.
P>Когда имплементишь апи, то эту часть и так нужно покрыть тестами, что естественно.
Вообще элементарно. Результат кодогенерации очень надёжно тестируется компилятором.
P>>>А раз не решает все, то часть останутся на проде. Гы-гы. Откуда и следует, что нужно тестировать и прод. Например — при обновлении 3rd party зависимостей.
P>·>Нет, не следует.
P>У тебя снова нет аргументов, поздравляю!
Ну не следует и всё тут. Достаточно тестировать тестовое окружение.
P>>>·>Чтобы пускануть тесты в проде и выявить эту проблему, в этом самом проде уже должно оказаться их обновление.
P>>> Алё — они поменяли свой сервис глядя в свои тесты. И подломали некоторые запросы твоего сервиса.
P>·>Это и лечится SIT.
P>Не лечится. Напомню — у вендора таких как ты 100500 контрактов. Тестировать как их новое апи ведет себя с каждым из консумером они никак не могут.
P>Максимум, для особых кейсов могут предоставить тестовые инстансы.
Этого достаточно.
P>Но это не гарантирует решение всех проблем.
А что гарантирует решение всех проблем?
P>>>Это норма, а не проблема. Крупные вендоры апи имеют десятки и сотни тысяч консумеров. Ты для них один из сотен тысяч.
P>·>Про conformance tests я уже тоже рассказывал.
P>Ты же не собираешься запускать их на проде. А значит будешь тестировать "юзером".
тестовым юзером.
P>>>Пускаешь тесты прода и видишь, что емейлы таки глючат. Опаньки!
P>·>Нормальные вендоры предоставляют средства для тестирования. Ищем для первого упомянутого: https://docs.sendgrid.com/ui/sending-email/email-testing
P>Именно такие тесты и нужно пускануть после обновления с их стороны. Альтернатива — "у нас багов нет", это твой любимый вариант.
Только это не прод, а тест.
P>>>Тогда это не признак большого проекта, а скорее признак тухлого проекта, который еле держится на плаву.
P>·>И что?
P>Ты говоришь про большой проект, а под признаки подходит любой, где нет денег. Например — 1 человек работает вместо команды и кое как справляется, на миграцию денег-времени нет.
Вот только что свежачокАвтор: Ночной Смотрящий
Дата: 16.12.22
от Ночного Смотрящего: "уже год пытаемся с 3.1 слезть, но пока только отдельные сервисы переползли". Вот и расскажи ему какой у него тухляк и денег у них нет и научи его жизни.
P>То есть, ты просто накидываешь абы что.
Это не накидывание, а реальность.
P>>>Мы уже выяснили — бредогенераторов для openapi 100500 единиц, и почти все из них или не подходят, или их нельзя использовать
P>·>И? В чём твой солюшн-то?
P>Я ж сказал — исключить кодогенерацию, оставить генерацию схемы для внешних консумеров, если у них платформа отличная от твоей.
Ты расскажи. Зачем схема внешним консьюмерам?
P>Если такая же — ты им даешь клиент который у тебя готов на этапе создания апи. Напоминаю — описание апи дает нам автоматически и сам клиент.
Не распарсил. Что автоматически?
P>>>Типичный кейс — понадобилась некоторая фича, а кодогенератор не поддерживает, приплызд
P>·>Я сам их подпатчивал и даже пулл-реквесты засылал, мелочёвку правда, и их даже мержили, не рокет-сайнс совершенно.
P>Именно что мелочевку. А что делать с большими фичами-багами — не ясно.
P>Обилие кривых кодогенераторов гарантирует затраты времени на выбор подходящего.
Брад какой — "слишком много выбора, значит плохо". Ну не выбирай, напиши свой. Это вполне под силу даже миддлу.
P>>>Экспорт АПИ — это ты предоставляешь АПИ своего сервиса внешним консумерам.
P>·>Хорошо, уже теплее. Ради чего стараться-то? Что внешние консьюмеры будут с этим твоим экспортированным АПИ делать будут?
P>Что им надо делать, то и будут.
Ясно. Проблемы консьюмеров шерифа не волнуют. ЧТД.
P>>>1 Тебе надо держать в уме возможности кодогенератора. Заюзал ты ResponseHeaders, а у тебя такое не поддерживается. Гы-гы.
P>·>То же и со схемогенератором. Или он у тебя универсальный всемогутер?
P>Схемогенератор это вещь намного проще. Типичный разработчик искаропки умеет генерировать json по набору данных, все приложения состоят из такой логики. А вот внятную кодогенерацию сделать — это вещь нетривиальная.
Гораздо проще. Валидировать сгенерённый код можно компилятором. Валидировать генерённый json и по каким критериям — не знаю как.
P>>>2 Метаданные парсить не нужно, это типизированый интерфейс, по которому генерить что угодно легко и просто.
P>·>А надо-то генерировать не что угодно, а только то, что умеет openapi.
P>В слова решил поиграть?
Нет. Пытаюсь достучаться. Ты должен писать такие метаданные и такой интерфейс, который хорошо ложится в openapi. Иначе то что нагенерится будет коту под хвост.
P>>>3 Вместо схемогенератора у тебя кодогенератор, при чем — два штуки, каждый со своими особенностями, клиент и сервер.
P>·>У тебя не просто схемогенератор, а схемогенератор+кодогенератор. Иначе генерить схему без последующей кодогенерации — зря электричество жечь.
P>Мне нужна генерация схемы + тесты по этой схеме. Тестировать конкретным генереным клиентом в корне неверно.
Ты так и не рассказал зачем нужная эта схема.
P>·>Сделать два кодогенератора проще, чем схемогенератор+кодогенератор.
P>Нужен только схемогенератор — апи будет тестироваться не абы чем, а конкретным тулом который умеет openapi.
Зачем? Чтобы что?
P>Ты не знаешь ни версию кодогенератора у клиента, ни платформу, ни даже язык программирования.
Не важно. Можно взять несколько самых популярных, попробовать самому и оформить в виде туториала для новых клиентов.
P>>>Я например писал и то, и другое. Кодогенератор это хтонический ужос по сравнению с генерацией джсон по метаданным.
P>·>Спекогенератор без кодогенератора не нужен.
P>Ты так и не сказал, зачем кодогенератор есть уже есть генератор спеки.
Сказал уже много раз. Ты просто не читаешь. Чтобы сгенерированную спеку можно было использовать с пользой.
P>>>Он пишет про другое — ты внимательно прочитай.
P>·>Я прочитал и понял именно так. Если у тебя есть другая интерпретация, выкладывай.
P>Ну так дай ссылку дай на сообщение, где НС это утверждает. Насколько я понимаю, ты искусно вырезал часть его утверждения.
ВотАвтор: varenikAA
Дата: 07.09.20
полная цитата:
Чисто теоретически я знаю как все таки сделать нормальный генератор, но это большая работа, включающая допиливание swashbuckle на предмет добавления в swagger.json дополнительной метаинформации о семантике методов.
Т.е. чтобы сгенерённую спеку можно было использовать клиентам, требуется дополнительная метаинформация и допиливание схемогенератора. И это всё теоретически.
P>>>А его нет. Гы-гы. Надо писать новый генератор, потому что допилить напильником не выходит из за GPL лицензии.
P>·>Ну зашли пулл-реквест.
P>И чем тебе пулл реквест поможет если лицуха GPL ? Такой софт не факт что можно в любой конторе использовать.
Имя софта в студию. Или ты теоретег?
P>>>Еще раз — не надо придумывать метаданные. Алё, ты вообще читаешь? Берем проверенную либу, закладываемся на её возможности.
P>·>Это не я их предлагаю придумывать, а Ночной Смотрящий, ему это и советуй.
P>Это твои домыслы. У него ничего не сказано, либу он берет, или врукопашную чегото делает.
Его цитаты: "пришли к выводу что писать клиентов
нужно руками". "
добавления в swagger.json дополнительной
метаинформации".
P>>>Снова теоретизирования Нам нужно проверить, что схема валидная. Мы берем готовый тул, который умеет слать запросы по такой спеке, и пишем под него тесты. Здесь у нас ровно 0 генеренного кода.
P>·>Тесты можно писать проще, без схемы и специальных тулов.
P> Нам нужно не просто абы что абы куда послать, а дать гарантии, что тест посланый согласно спецификации OpenAPI будет понят твоим сервисом.
Зачем? Если эту спецификацию ни для чего более использовать не выходит?
P>В противном случае получится так, что тесты зеленые, потому что девелоперы-тестеры намастырили их по записям со стейджа, а у клиента ничо не работает, т.к. он шлет в строгом соответствии со спекой.
Хорошо, но уже лучше. Осталось тебе понять, что не обязательно для этого генерить спеку.
P>>>Ты высек сам себя — по твоей ссылке пример работы бредо кодогенератора. Этот бредогенератор такое нагенерил, что ни руками вычистить, ни внятно использовать нельзя.
P>·>Ты читать точно умеешь? https://restapi.moedelo.org/docs — это именно что сгенерённая swagger схема. Которую невозможно ни для чего полезного применить, даже глазками почитать и то проблема, тулзы на ней затыкаются.
P>1. есть схема
P>2. какие то кодогенераторы с ней не справляются
Да мало кто справился. В этом и дело. Сделано на от*бись.
P>С чего ты взял, что она генерированая? Подробнее. Я видел и бОльшие простыни, созданные вручную.
У тебя есть сомнения?! Подскажи мне вещества, которые позволят человеку написать "Moedelo.DocumentsRegister.Api.Models.Dto.ApiDataResponseDto`1[[System.Collections.Generic.List`1[[Moedelo.DocumentsRegister.Api.Models.Dto.DocumentRegisterDto, Moedelo.DocumentsRegister.Api, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]" в однострочный полутрамеговый json.