• Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Alex Wells, спасибо, это вариант и называется Spec-First :-)

    По идее схема такая: Фронты ↔ API контракт API ↔ Бекенд: бизнес-логика, база, кэш и т.д.

    И если API это просто язык общения, тогда не вижу проблемы выучить его обоим сторонам и согласовывать до реализации. Просто выучи язык и всем будет профит.

    К чему это я: НЕТ никакого смысла преждевременно проэктировать АПИ фронту, если финальное слово не за ним. Это трата времени в пустую.


    Не понимаю, почему не за ним :-) Оно за всеми, в данном контракте 2 стороны.
    Если бэк сделает в API, то, что не нужно фронтам, нафиг такой бэк? Нафиг вообще API? Он кроме фронтов пользователю вообще не нужен. Поэтому заказчиком для бэка выступает фронт, который и заключает с бэком контракт через YAML OpenAPI, а потом через кросс-валюдацию проверяет, что контракт исполнен. По-моему очень формализованный и четкий подход. А не из серии: бэк - я так вижу, да будет так, вот вам 1000 полей в пользователе, пофиг что выводить 5 только лишь, а лишние байты зачем?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    V, подход договориться на словах, на бумажке или в чате и сразу в код - получается такой подход, а потом по ходу дела разберемся.

    А еще есть другой подход:

    Можно сгенерировать свою спецификацию из аннотаций кода, но говорят, что автоматическая генерация - не лучший подход. Майкл Стоу (Michael Stowe) в статье Беспрепятственный REST: руководство по проектированию Perfect API рекомендует группам вручную реализовать спецификацию, а затем обрабатывать документ спецификации как документ, который разработчики используют при выполнении реального кодирования. Этот подход часто упоминается как «spec-first development».


    Spec-first development это философия о том, как разрабатывать API более эффективно. Если вы следуете философии «сначала спецификация», вы сначала пишете спецификацию и используете ее в качестве контракта, к которому разработчики пишут код.


    Ну и как проект для совместного создания API спецификаций https://starkovden.github.io/swaggerhub-introducti...

    Более 15 000 команд разработчиков программного обеспечения по всему миру используют SwaggerHub. Поскольку спецификация OpenAPI становится в большей степени отраслевым стандартом для документации API, специфичные инструменты SwaggerHub имеют важное значение.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    V, тогда зачем что-то документировать? Обсуждать? Согласовывать? Почему сразу не писать код всем сразу? И каждый напишет в итоге, но что-то свое.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    V, это стандарное не понимание Swagger - это не "шкурка" в которой можно смотреть чего там на бекенд в API, а это стандарт описания API. Это JSON схема https://github.com/OAI/OpenAPI-Specification/blob/... которая в первую очередь создавалась для API Specification First - сначала опиши как будет, а потом иди программировать.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Спасибо, но ответ слишком абстрактен. Вы проектировали Swagger в YAML?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Alex Wells, спасибо за развернутый ответ.

    Как вы прокомментируете?

    Мне кажется проблема в том, что бекенд разработчики не верно понимают разработку бизнес-логики и разработку интерфейса доступа к ней и к данным. Интерфейс на бекенд может быть HTTP, сокеты ли даже командная строка. Это всего лишь интерфейс. Эти разработчики при проектировании ендпойнта /login часто зашивают в контроллер бизнес-логику, работу с базой, генерацию сессии и т.д. И именно поэтому они связывают проектирование API с разработкой кода функции и именно поэтому когда им нужно добавить например GraphQL им нужно дублировать функционал.


    Что скажите? Или API это больше чем данные?

    Почему заранее нельзя договориться с фронтом как данные будут бегать туда-обратно и начать работу параллельно? Такого кейса нет? Фронты не могут предложить вариант как это видят? Вы на беке дадите добро или внесете изменения и у вас будет контракт с фронтами. Вы спокойно пойдете делать и они тоже. Потом через какое-то время вы соединитесь и проверите, что ваш контракт выполнен. Что тут не так?


    Информация с https://starkovden.github.io/introduction-openapi-...

    Можно сгенерировать свою спецификацию из аннотаций кода, но говорят, что автоматическая генерация - не лучший подход. Майкл Стоу (Michael Stowe) в статье Беспрепятственный REST: руководство по проектированию Perfect API рекомендует группам вручную реализовать спецификацию, а затем обрабатывать документ спецификации как документ, который разработчики используют при выполнении реального кодирования. Этот подход часто упоминается как «spec-first development».


    Spec-first development это философия о том, как разрабатывать API более эффективно. Если вы следуете философии «сначала спецификация», вы сначала пишете спецификацию и используете ее в качестве контракта, к которому разработчики пишут код.


    Ну и как проект для совместного создания API спецификаций https://starkovden.github.io/swaggerhub-introducti...

    Более 15 000 команд разработчиков программного обеспечения по всему миру используют SwaggerHub. Поскольку спецификация OpenAPI становится в большей степени отраслевым стандартом для документации API, специфичные инструменты SwaggerHub имеют важное значение.


    Если, Вы не делали никогда по другому, не значит что этого нет?
    Есть не только фронты, есть архитектор наконец, и 5 фронт разработчиков.
    Есть опытные фронт разработчики и менее опытные бэк, такое может быть.

    Ну и собственно сам вопрос.

    Гипотеза: если фронты хорошо знают REST, то это реальный профит, когда они сами могут накидать в Swagger ендпойнтов, которые потом утвердит или поправит бекенд. Если добавить сюда удобный редактор в стиле Notion когда тутже правим и видим превью ендпойинта. А если еще к нему зацепить Swagger с реализованного бэка потом и эта чтука сделает кросс-валидацию и скажет где контракт нарушен - то вообще огонь или нет?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Ярослав Иванов, наверное профессиональное. Когда-нибудь смотрели https://swagger.io/tools/swaggerhub/ ?

    With SwaggerHub, you can accelerate your team’s design process while enforcing quality and style consistency. The API editor makes compliance with Swagger, now referred to as the OpenAPI Specifications (OAS), simple and intuitive.


    Accurate, up-to-date documentation is essential to a successful API initiative. With SwaggerHub, you can generate interactive documentation automatically during design, making it easy for both API consumers and internal users to learn and work with your APIs.


    Или все таки переброс JSONчиков в чате более оптимально?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Ярослав Иванов, спасибо за ответ, что вы можете сказать по поводу этого?

    Информация с https://starkovden.github.io/introduction-openapi-...

    Можно сгенерировать свою спецификацию из аннотаций кода, но говорят, что автоматическая генерация - не лучший подход. Майкл Стоу (Michael Stowe) в статье Беспрепятственный REST: руководство по проектированию Perfect API рекомендует группам вручную реализовать спецификацию, а затем обрабатывать документ спецификации как документ, который разработчики используют при выполнении реального кодирования. Этот подход часто упоминается как «spec-first development».


    Spec-first development это философия о том, как разрабатывать API более эффективно. Если вы следуете философии «сначала спецификация», вы сначала пишете спецификацию и используете ее в качестве контракта, к которому разработчики пишут код.


    Ну и как проект для совместного создания API спецификаций https://starkovden.github.io/swaggerhub-introducti...

    Более 15 000 команд разработчиков программного обеспечения по всему миру используют SwaggerHub. Поскольку спецификация OpenAPI становится в большей степени отраслевым стандартом для документации API, специфичные инструменты SwaggerHub имеют важное значение.


    Если, Вы не делали никогда по другому, не значит что этого нет.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Роман Мирр, да. Кругом все "профессионалы", а как начинаешь приводить аргументы они или начинают хейтить и откровенно унижать или просто сливаются, так профи не поступают.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Дамир, с помощью чего вы договаривайтесь о нейминге полей и будущих схемы данных. Фронт и бэк?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Еще немного информации с https://starkovden.github.io/introduction-openapi-...

    Что бы немного успокоить хейтеров.

    Можно сгенерировать свою спецификацию из аннотаций кода, но говорят, что автоматическая генерация - не лучший подход. Майкл Стоу (Michael Stowe) в статье Беспрепятственный REST: руководство по проектированию Perfect API рекомендует группам вручную реализовать спецификацию, а затем обрабатывать документ спецификации как документ, который разработчики используют при выполнении реального кодирования. Этот подход часто упоминается как «spec-first development».


    Spec-first development это философия о том, как разрабатывать API более эффективно. Если вы следуете философии «сначала спецификация», вы сначала пишете спецификацию и используете ее в качестве контракта, к которому разработчики пишут код.


    Ну и как проект для совместного создания API спецификаций https://starkovden.github.io/swaggerhub-introducti...

    Более 15 000 команд разработчиков программного обеспечения по всему миру используют SwaggerHub. Поскольку спецификация OpenAPI становится в большей степени отраслевым стандартом для документации API, специфичные инструменты SwaggerHub имеют важное значение.


    Видимо те кто хейтил в 15 000 не входят, не обладая информацией, что есть и другой подход.

    Верно Agent Smith и за это потом стыдно.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Спасибо за конструктив. А они паралельно как делают? Вы им дали уже структуру данных и примерные ендпойинты? Как они мокают?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Swagger которые прекрасно работают на небольших проектах
    он прекрасно работает и на проектах масштаб которых ты плохо себе представляешь


    Тут имелось в виде описание Swagger в виде YAML, вы точно поняли суть вопроса? Работали с https://editor.swagger.io/ одним гиганским YAML файлом внутри? Удобно такое потом поддерживать?

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


    Тогда Ваш вывод такой: не надо ничего формализовывать, все через чаты, перекинули текст и JSONчики и погнали. Потом проверили ручками, что все сделано правильно.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Антон Бреславский, ни проблем, ни негатива. Лишь описание ситуаций, принимать решения вам, нести за них ответственность тоже.


    Так в комментах, как раз таки именно оценки, пример я уже приводил.

    Но если у меня на картинке (окей, экране интерфейса) список пользователей, я не могу спроектировать к этой области API вместе с DTO (модель, схема данных)?


    Вот пример инструмента на простом примере, что тут не понятного?

    61948d1c61f83084718407.png.

    Есть картинка, с нее описали вызовы к API.

    Бизнес логика на беке, сущности в первую очередь создаются там, их взаимодействие тоже, отображение вторично, но можете сделать наоборот


    Это вывод чистого бекенщика. Бэк все - фронт ничто. Но если бекенщик в одну кучу сваливает модели бизнез-логики, их взаимодействие в бизнес слое и выдачу их во внешний мир - в один слой, тогда да конечно API для него = весь бэкенд и считает, что фронты решили его убрать :-)
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    raiboon, спасибо за ответ. А почему? API - это по сути просто запрос данных с бекенда. Бизнес слой на беке отдельно, какая разница какой интерфейс? Может быть одновременно и REST и GraphQL, а дергать одну и ту же часть бизнес-логики?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Vitsliputsli, так получается мое предложение рабочее и ничего токсичного в нем нет? В чем тогда проблема? В чем такой негатив? Я на фронт прошу только данные прислать в таком формате, у вас там свои модели, но DTO у нас общее.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Agent Smith, а зачем все удалять? Значит стыдно что ли? Теперь конечно, уже не ничего не подтвердишь, когда целая ветка удалена :-) Ну хорошо, что Вам стыдно стало, значит еще не все потеряно. По-сути своим поступком, Вы как раз таки подтвердили свою неадекватность.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Agent Smith вы и правда удалили все свои комментарии? Что серьезно?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Vitsliputsli, и мой комментарий был такой

    То есть в Вашем случае, мы должны ставить задачи беку и прикладывать к ним картинки? По этим картинкам они уже создают API? Фронты пока сидят и ждут когда бэк что-то уже сделает? Получает бек должен хорошо разбираться в дизайне, понимать как работает приложение и т.д. Верно?


    Тут не было оценок, вставка

    и если их отдать беку, то что они могут хорошего сделать, если не понимают как работает приложение, т.е. картинки.


    Это ваша личная оценка, у меня это был как вопрос

    Получает бек должен хорошо разбираться в дизайне, понимать как работает приложение и т.д. Верно?


    Поэтому оценка, что бекенд не может, ваш вывод.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Что api создаются по картинкам, и если их отдать беку, то что они могут хорошего сделать, если не понимают как работает приложение, т.е. картинки. Только не говорите, что это AgentSmith придумал, что api создаются по картинкам. Вообще, эпичный комментарий, ничем не хуже того, что я про базу писал в ответе.


    Возможно, выглядит эпично. Но если у меня на картинке (окей, экране интерфейса) список пользователей, я не могу спроектировать к этой области API вместе с DTO (модель, схема данных)? Я же вижу какие столбцы в таблице, есть пейджинг, есть поиск. Отправлю на бэк Swagger, бэк скажет, да мы можем реализовать это так. Мокай. Что тут плохого? Вся суть вопроса только в этом, не заменить бэк, не отнять у них работу, а оперативно согласовывать API и не ждать когда они выльют.