Pull to refresh

Comments 7

Design API First-подход в первую очередь помогает создавать API более эффективно

Не соглашусь. Составление руками в Swagger Editor это издевательство. Зачем аналитикам вообще заходить на территорию даже не техлида, а мидла. REST и OpenAPI это базовая база, и регулярки тоже. Разве мидл-кодеру не достаточно списка действий и параметров и краткого описания их назначения с возможными значениями в свободной форме? Кодер готовит черновик, через автогенерацию собирается схема, аналитик через Swagger UI проверяет и при необходимости указывает что подправить.

Это зависит от процессов и представления команды, где находится источник правды. Если правдой считать код сервиса, то генерация схемы оттуда приемлема.

Мне все же видится, что schema-First подход более интересен, потому что позволяет развязать команды фронта, бека и тестирования и согласовать API максимально дёшево - всё же yaml поправить гораздо быстрее и дешевле, чем код бекенда. Также такой подход неплохо срабатывает в случае, когда API является внешним - проще создать схему (при её отсутствии) и нагенерить себе по ней клиентов, тестовых заглушек и чего угодно ещё

Но, как обычно, есть нюансы) Например, существующие инструменты генерации северного когда под .net не умеют в minimal API, odata и прочие штуки - генератор придётся писать самим. То же самое с клиентом - если используется библиотека, которая не поддерживается генератором, то попадаешь на разработку собственного инструмента

Поддержу, у нас аналитики просто пишут внятные описания api в свободной форме (обычно таблички в конфе) со списком входных/выходных параметров, действий и ошибок. И потом вместе с тестировщиками проверяют через swagger ui, что все сделано корректно.
Не, ну можно и на аналитиков повесить делать api через editor, но мне кажется, что более разумно посвятить это время на улучшение качества аналитики или проработку большего количества фич)

Честно говоря, одно другому не мешает.

Отчасти согласна с теми, кто выступил против того, чтобы аналитики писали спецификацию openAPI. Не всем и не всегда это нужно / полезно / оправдано по ресурсам.

Но больше согласна с TerekhinSergey. Все очень сильно зависит от процессов в команде.
В той же заказной разработке без этого достаточно сложно - когда у тебя бэк делает один подрядчик, фронт второй - аналитик может быть вообще третий (бывало и такое). А сроки у всех как обычно горят.
В таком случае спецификация очень упрощает жизнь и позволяет стартануть работы в параллель - на согласованных контрактах, с примерами, на моках и тд.
А так да, тоже сталкивались с тем, что приходилось свой codegen писать, но его один раз написали и под все остальные проекты применяли.

По поводу того, что это издевательство - спорный момент. Тебе что хорошую документацию в конфлюенс написать, что спецификацию openAPI, по времени не сильно большая разница. Потому что тебе также нужно приложить примеры запросов / ответов, расписать каждый параметр. В Swagger Editor писать может и да, издевательство) но с применением любой IDE с нужными расширениями это уже не такое и издевательство - с генерацией шаблона, автодополнениями, быстрой навигацией по ссылкам на модели и тд.

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

Согласна, аналитик руками дольше будет делать чем девелопер через IDE согласно базового описания.

Это занимает не так много времени, как вам кажется:)

Да, возможно у системного аналитика, который только начинает работать с OpenAPI (по хорошему еще и с Git) это может занять чуть больше времени, чем у более опытного в этом деле аналитика.
По факту - это не дольше, чем на каждый метод сформировать страницы в конфлюенс и описать все в виде текста и таблиц.

Мне кажется мы с вами говорим про разные подходы.
Проектирование спецификации OpenAPI может делаться аналитиком без особых проблем, в адекватные сроки для определенных целей - повторюсь, чтобы до этапа разработки согласовать контракты и в параллель пустить разработку (+ возможность использовать кодогенерацию для клиента, сервера, докуменnации, API тестов). Преимущества этого подхода подсвечены в статье.
В процессе согласования вносить правки в файл спецификации сильно быстрее и дешевле, чем в код бэкенда, как подсвечивали выше.
Если посмотреть любой курс по системному анализу, там будут темы по части проектирования REST API, т.е. системные аналитики умеют проектировать API (по хорошему) - вопрос в визуализации требований к API:

  • спецификация OpenAPI, которую можно удобно и полезно задействовать еще до появления кода разработчиков

  • или огромная текстовая таблица, которую надо превратить в код и только потом полезно задействовать, ну и вопрос - будут ли в этом коде понятные аннотации, чтобы сгенерированную документацию API отдать другим командам и в целом использовать как понятную, подробную документацию вашего API (по моему опыту - очень высока вероятность что нет, не будет).

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

Sign up to leave a comment.