LINUX.ORG.RU

Альтернатива OpenAPI и Swagger

 , ,


0

1

А есть ли что-нибудь проще, чем OpenAPI и Swagger? Нотацию OpenAPI можно застрелиться писать, даже с автокомплитами и прочим. Хочется просто генератор без необходимости писать модели объектов ответы и т. д.

Тегов swagger, openapi не нашел =(



Последнее исправление: maxcom (всего исправлений: 1)

А какая у тебя цель? Тебе конкретно спеку нужно получить или Swagger UI? Елси второе, то ищи расширение для своего фреймворка, которое сделает всё за тебя, если первое, то альтернатив уровня индустриального стандарта, которым openapi и является, нет даже близко.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Цель: сделать спеку.

В моем случае не получится подключить расширение для моего фреймворка: придется много чего переписать или ровно также вкорячивать аннотации (python, flask без restplus). Писать в каком-нибудь mkdocs банально долго и больше вероятности сделать опечатку.

альтернатив уровня индустриального стандарта, которым openapi и является, нет даже близко.

Печальбеда(

lx1
() автор топика
Ответ на: комментарий от lx1

А проект уже готов или только начинается? Если только начинается, и в дальнейшем намечается хоть какая-то нагрузка, то лучше взять FastAPI. Там и сваггер нахаляву, и приведение типов, которое на фласке нужно тащить с расширением, либо костылять, ну и асинхрон.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Уже готов, но там в пределах ~30 раутов. Тоже смотрел FastAPI и даже думаю над вариантом сделать переход на него.

lx1
() автор топика

да, и хотелось бы обойтись без лишних велосипедов

anonymous
()
Ответ на: комментарий от theNamelessOne

GraphQL.

Спасибо, интересно. Можно чуть более развернуто?

anonymous
()
Ответ на: комментарий от lx1

Вроде GraphQL - просто расширение идеи REST.

По сути тот же REST с возможностью попросить подмножество данных прямо с фронтенд. Спросить меньше - фундаментально безопасная операция по сравнению с полной выборкой. Можешь переизобрести GraphQL через GET /users?fetch_only=name,age. Ну плюс еще реляционные фичи на любителя

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vertexua

Можешь переизобрести GraphQL через GET /users?fetch_only=name,age

Уже изобрели JSON:API. Только оно не совсем живое, да и по фичам, удобству и библиотекам/сообществу сильно проигрывает GraphQL.

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 1)

Вообще обычно делается наоборот - сначала спеку пишут, а потом генерируют по ней клиент или сервер-заглушку. Хотя встречается и подход с генерацией спеки из аннотаций. А так чтобы спека генерилась из рандомного куска питонятины не встречал

cobold ★★★★★
()
Ответ на: комментарий от theNamelessOne

Уже изобрели JSON:API. Только оно не совсем живое, да и по фичам, удобству и библиотекам/сообществу сильно проигрывает GraphQL.

выглядит юзабельным

anonymous
()

В старые времена спеку SOAP-сервиса можно было мышкой натыкать. А реализацию можно было в визуальном редакторе бизнес-процессов запилить. Из кода надо было писать разве что только сниппеты нетривиальной логики. А протестировать через SoapUI. Вот уж где дзен-то был, не то что этот ваш REST.

Да и всё было солидно-ентерпрайзно, с валидацией, сертификатами и человекочитаемыми логами.

cocucka ★★★★☆
()
Последнее исправление: cocucka (всего исправлений: 1)
Ответ на: комментарий от cocucka

Ты шо, там же был xml! Да и ваще был продуктом микрософта! Да затакое тебя изгнать и забанить надо!

На самом деле соап в ентерпрайзе зачастую к такой лапше приводили с тонной различных расширений, именно из-за простого и быстрого пути - нанять индусов, чтоб они чего-то там мышой наготовили, что лично мне как-то его не жалко, но да, при примых рукам была конфетка.

vtVitus ★★★★★
()

Альтернатива не писать описание +) Есть application/hal+json , который ИМНО может быть заменой детальному описанию. Во всяком случае я поработал с ентерпрайзнутым продуктом на этом самом hal - нужно было в хвост и в гриву использовать рест, пространной документации в которой много было не описанно, было более чем достаточно.

vtVitus ★★★★★
()
Последнее исправление: vtVitus (всего исправлений: 1)
Ответ на: комментарий от vtVitus

Ты шо, там же был xml!

Как-будто что-то плохое. Я до сих пор не понимаю как можно было променять такой мощный и универсальный язык на убогий json в котором даже схемы-то в стандарте нет. Я уж и не говорю про yaml.

именно из-за простого и быстрого пути - нанять индусов

Сейчас такая же фигня, только вместо SOAP, J2EE и WebSphere/Weblogic, теперь Spring Boot, Swagger, REST API и микросервисы.

cocucka ★★★★☆
()
Ответ на: комментарий от cocucka

на убогий json в котором даже схемы-то в стандарте нет. Я уж и не говорю про yaml.

Ты шо! Принцип прост - чем хуже тем лучше! Я вот с ужасом жду, что там будет популярно апосля ямля.

vtVitus ★★★★★
()
Ответ на: комментарий от vtVitus

Ну камон) понятно, что нет лучше доки, чем та которую не пришлось писать, но, увы, не все такие прожженые. Но за наводку спасибо)

lx1
() автор топика
Ответ на: комментарий от lx1

Что-то круто ты взял. Тебе надо из одной структуры данных сделать другую структуру данных. Тут вопрос только в удобоваримости твоей структуры для тебя. Там может вообще быть какая-нибудь херня, которая подразумевает какие-нибудь профили, группы и прочую хрень.

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

Так у меня задача не про то, чтобы сделать аналог свагера, а избегать опечаток (поля модели, например) и на выходе получать документацию с примерами. Эта реализация проживет какое-то время, а потом выкину и перейдем уже на тот же свагер, который автогенериться как у нормальных людей.

Жил-был стартап. Сначала пилили как пилиться, а потом он рррраз и полетел вперед. Команда фронтенда удволилась и список фич для бекенда раздулся. И нужно фичи писать, и доку тоже. А времени переезжать прямо сейчас на нормальный автоген ну никак нет.

Отчасти я исправляю собственную архитектурную глупость.

lx1
() автор топика
Ответ на: комментарий от lx1

Так у меня задача не про то, чтобы сделать аналог свагера

Ну так всё правильно, его и не надо делать. Надо костыль сбоку, который будет делать свагер за тебя.

crutch_master ★★★★★
()
Ответ на: комментарий от lx1

Имеется ввиду детальную доку. Просто хал сразу описывает все доступные переходы в самом запросе и подобрав удобочитаемые урл-названия, можно сократить кучу описываемой инфы и сосредоточиться на главном и тогда никакие генерялки описания и не нужны + при изменениях, описания ненужно перегенерять. В общем ИМНО одни плюсы.

vtVitus ★★★★★
()
Ответ на: комментарий от lx1

Называется это штука Hypermedia. Начать можно отсюда https://habr.com/ru/company/aligntechnology/blog/281206/ примеры там тоже есть, правда насколько они сейчас актуальны я хз. а так https://yandex.ru/search/?clid=2186623&text=application%2Fhal%2Bjson&lr=2&redircnt=1626010420.1 +)

апд. в джаве есть вот такое spring-rest-hal для построения браузера хал ссылок - https://www.baeldung.com/spring-rest-hal , это в рамках темы топика, возможно, в твоём языке тоже есть нечто похожее.

vtVitus ★★★★★
()
Последнее исправление: vtVitus (всего исправлений: 1)

подозреваю, что ты пишешь на каком-нибудь гоусеке, если тебе эти говнонотации писать вручную нужно, потому как многие нодовские/питоновские либы сами генерируют эти схемы

tz4678 ★★
()

я чет думал spring сам эту документацию генерирует, но я бы все равно вручную писать не стал, скриптами с регулярками взял бы все сгенерировал

tz4678 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.