Size: a a a

2020 August 03

AP

Alexander Panko in ctodailychat
Ruslan
А сваггер спека «руками» это и есть тот самый же yaml. Плюс у command line утилиты от свагера можно валидировать получившийся json/yaml, это в ci/cd встраивается.

Про код сгенерированный ими - правда немного грустно, мы используем, как контракт между микросервисами и живет вроде ок.

На своём сайд проекте - пишу руками, и также в постман заливаю. Кстати, послушал бы как эту часть автоматизируете, через postman api?
Не очень понял про автоматизацию какой части идет речь?
источник

R

Ruslan in ctodailychat
Alexander Panko
Не очень понял про автоматизацию какой части идет речь?
Вот сгенерили/написали вы сваггер, как он попадёт в постман в виде коллекции? Из ci?
источник

AP

Alexander Panko in ctodailychat
Ruslan
Вот сгенерили/написали вы сваггер, как он попадёт в постман в виде коллекции? Из ci?
нет, swagger.json раздается с серврера, клиенты (фронты - разработчики) просто переимпортируют свежую версию
источник

СА

Сергей Аксёнов... in ctodailychat
Alexander Panko
Боли псто( Кто-нибудь научился готовить swagger без боли?

Я даже не имею ввиду генерацию сервера или клиента (пару раз пытался, на код без кровавых слез смотреть нельзя), а тупо генерацию спеки по серверному коду, которую можно импортнуть к примеру в postman и отдать фронтам. Третий раз я это пытаюсь сделать, сначала в одном проекте на python но было давно детали не помнб помню что был гемморой. Затем проект на node, nestjs, было +/- ок но весь код моделей и контроллеров пришлось обвешать аннотациями. Сейчас бэкенд на go, и я почти обрадовался что go-swagger позволяет спеку отдельным package оформлять не засирая код, но бляха муха писать yaml в комментариях - то еще удовольствие и главное пока спеку не проверишь в swagger ui гарантировать что там все +/- ок невозможно.

Отдельная боль это авторизация, еще ни разу не удалось сделать такую спеку по которой postman поймет автоматом на каких методах какая авторизация, но это я уже на postman грешу.

Вобщем уже посещвет мысль не выпендриваться, забить и писать спеку руками если она очень нужна, но думаю может все таки есть тайное знание в природе?)
Я пишу спеку руками и очень это пропагандирую. Во-первых, это единая точка правды для всех команд: фронта, бэка, мобильных клиентов. Её никто не может сломать случайно, только намеренно (при генерации из кода бэка - можно сломать, изменив сигнатуру метода контроллера, и никто этого не заметит, пока баг не уедет в интеграционное или e2e тестирование).

Во-вторых, если хорошо аннотировать ручки - то это готовая документация. Доп. аннотации можно добавить потом, можно их менять, если пришёл фидбэк типа "что-то непонятно", не трогая при этом код.

В-третьих, можно использовать кодгенерацию не только для клиентов, но и для бэкенда.

В-четвёртых, при старте работы над новой фичой достаточно описать все ручки в спеке - и клиенты могут начинать работать, stub-серверов есть в ассортименте.

В-пятых, спеку можно бесплатно использовать для acceptance-тестирования бэкенда.
источник

J

JvK in ctodailychat
я пишу спэку прямо в pydoc + yaml
источник

R

Ruslan in ctodailychat
Alexander Panko
нет, swagger.json раздается с серврера, клиенты (фронты - разработчики) просто переимпортируют свежую версию
Понял, я настраивал базовый импорт в сваггер, но там у них не очень удобное апи
источник

J

JvK in ctodailychat
потом хитрыми скрыптами генерится rst и сразу тестирование. а результаты идут в доку как примеры
источник

J

JvK in ctodailychat
в yaml собственно что примерно должна вернуть функция
источник

AP

Alexander Panko in ctodailychat
JvK
я пишу спэку прямо в pydoc + yaml
ну то есть спека в камментах тоже?
источник

J

JvK in ctodailychat
только там
источник

J

JvK in ctodailychat
а зачем два раза писать-то?
источник

AP

Alexander Panko in ctodailychat
JvK
только там
ну хотелось бы как минимум подсветку синтаксиса, иначе тот ко внешними тулзами даже простые опечатки ловить
источник

J

JvK in ctodailychat
но у меня почти везде rpc. если restful то сваггер
источник

J

JvK in ctodailychat
с подсветкой синтаксиса в pydoc да, лажа
источник

AP

Alexander Panko in ctodailychat
Сергей Аксёнов
Я пишу спеку руками и очень это пропагандирую. Во-первых, это единая точка правды для всех команд: фронта, бэка, мобильных клиентов. Её никто не может сломать случайно, только намеренно (при генерации из кода бэка - можно сломать, изменив сигнатуру метода контроллера, и никто этого не заметит, пока баг не уедет в интеграционное или e2e тестирование).

Во-вторых, если хорошо аннотировать ручки - то это готовая документация. Доп. аннотации можно добавить потом, можно их менять, если пришёл фидбэк типа "что-то непонятно", не трогая при этом код.

В-третьих, можно использовать кодгенерацию не только для клиентов, но и для бэкенда.

В-четвёртых, при старте работы над новой фичой достаточно описать все ручки в спеке - и клиенты могут начинать работать, stub-серверов есть в ассортименте.

В-пятых, спеку можно бесплатно использовать для acceptance-тестирования бэкенда.
боялся такого коммента, понимал что это видимо единственный здравый путь)
источник

СА

Сергей Аксёнов... in ctodailychat
Alexander Panko
боялся такого коммента, понимал что это видимо единственный здравый путь)
А почему боялся? Писать доки - это очень хорошо.
источник

J

JvK in ctodailychat
но вот скажем я любю rpc, юзеры любят restful. на проекте и то и другое, restful на лету конвертируется в rpc. тут только свои тулзы
источник

AP

Alexander Panko in ctodailychat
Сергей Аксёнов
А почему боялся? Писать доки - это очень хорошо.
Ну по опыту документация openapi вполне ок, а у всяких врапперов пойди ещё разберись что куда вписать чтоб на выходе нужное получить. Боялся потому что модели описывать муторно, много работы.
источник

J

JvK in ctodailychat
кстати насчёт тестирования. посоветуйте может что-то. есть большой back-end, есть к нему pytest'ы штук 800 файлов в каждом по 5-6 функций. есть ли что-то, что красивые репорты рисует?
источник

AP

Alexander Panko in ctodailychat
JvK
но вот скажем я любю rpc, юзеры любят restful. на проекте и то и другое, restful на лету конвертируется в rpc. тут только свои тулзы
а как же загнать всех железной рукой в счастье?)
источник