Как стать автором
Обновить

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

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров10K
Всего голосов 6: ↑5 и ↓1+5
Комментарии16

Комментарии 16

Долгое основательное вступление, к нему ожидались поучительные примеры из жизни, но нет, опять в другой раз. Сама то идея понятна и привлекательна. Хочется узнать реальный опыт, вот собрали OpenAPI схему, утвердили, положили в репозиторий, таким-то инструментом нагенерили моки, оживили их, фронтэндеры пользуются. Потом прилетела правка, обновили схему. Что-то ещё надо сделать? Насколько гладко и безболезненно проходят правки? В моей практике есть задачи, где такие правки неоднократные, хотя и мелкие.

Долгое основательное вступление, к нему ожидались поучительные примеры из жизни, но нет, опять в другой раз. Сама то идея понятна и привлекательна. Хочется узнать реальный опыт

Понимаю, данную публикацию изначально планировал на "entry" уровне, просто как призыв к действию и краткий обзор имеющихся инструментов. Про опыт конкретных реализаций наверное в следующих публикациях расскажу, благо он есть.

собрали OpenAPI схему, утвердили, положили в репозиторий, таким-то инструментом нагенерили моки, оживили их, фронтэндеры пользуются. Потом прилетела правка, обновили схему. Что-то ещё надо сделать? Насколько гладко и безболезненно проходят правки?

Если правки не меняют логику работы клиентского приложения, а только касаются формата API, то изменения гладко проходят. Используем что-то типа паттерна "Адаптер", который на вход принимает схему данных приходящую из api, а на выходе отдаёт схему данных необходимую для построения UI (её можно даже просто видя макет определить). Соответственно, если макеты не менялись то на выходе адаптер отдаёт всегда одно и тоже, и при небольших правках в api, мы просто учим адаптер работать с новыми входящими данными. Выглядит это обычно как правки в пару строк в одном файле, то есть безболезненно. Особенно если у вас моки автоматом генерятся.

Этот адаптер потом до гигантских размеров вырастает

Не вырастет, он на уровне отдельных методов работает

НЛО прилетело и опубликовало эту надпись здесь

Postman в нынешнее время - незаменимый инструмент, и не только для бэкенд разработчиков с тестировщиками.

Postman это ненасытный монстр, который нас всех проглотит;) Так ли уж незаменим? Если не секрет, как вы коллекции храните и распространяете? Возможно, есть платная подписка. Меня смущает привязка к облаку и возможность блокировки. Больше нравится примеры запросов хранить текстом в репозитории, в виде файлов, как это делают httpYac или Bruno.

А мок сервер наверняка можно отдельно поднять, из OpenAPI-схемы. Такой подход видится более гибким и надёжным.

Меня смущает привязка к облаку и возможность блокировки

А кто Вам мешает в Postman сохранять коллекции у себя локально на компьютере?
У него есть такая возможность.
В таком варианте Вы не зависите ни от каких подписок и никто Вам ничего не сможет заблокировать.

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

Насчёт блокировки и нормальной работы без облачной учётки - у вас наверное какой-то особый Постман.

Под Линуксом даже коллекцию открыть нельзя без входа

У меня обычный Postman, скачанный с сайта производителя.
Замечательно работает в локальном режиме без всяких облаков. Единственный момент - я использую версию 9.31, т.к. начиная с 10-й стали просить деньги за запуск коллекции по Run больше чем 25 раз, а мне по работе эта возможность постоянно требуется.

Возможно, что в новых версиях еще добавили разных ограничений.

Можно на картинке увидеть доказательство: "Working locally" :)

Можно на картинке увидеть доказательство: "Working locally" :)

А чем плоха просто папка с json файлами ответов, которые возвращаются в апи методах вместо fetch к серверу, с задержкой, и которую можно использовать в тестах, не поднимая никаких серверов?

Ничем не плоха если Вам её достаточно, но если есть также задача обработать ошибки вызванные статусами 4хх и 5хх, то тут уже надо что-то посерьёзнее.

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

Мы с msw перелезли на Mockoon. Очень удобно, все с gui и интуитивно понятно. Не нужно читать доку. Локальные данные можно хранить прямо в проекте в Гите. Есть образ для запуска на стенде. Как вариант есть ещё Charles, но это по хардкору и больше для тестировщиков.

Для себя я понял следующее:

  • Каждый из подобных инструментов требует изучения его документации перед началом работы. Это занимает время...

  • Каждый из подобных инструментов имеет ограничения, с которыми неминуемо сталкиваешься, если ваш проект имеет хоть какую-то сложность. Преодоление этих ограничений выливается в тот ещё геморрой. Это занимает время...

  • Как и писалось в статье, иногда это дополнительные зависимости в проекте.

А что если не замусоривать проект лишними зависимости и всё сэкономленное время потратить на разработку своего мини-сервера на каком-то языке, который имеет все нужные инструменты в стандартной библиотеке, плюс очень простой, плюс весь сервер компилируется только лишь в один бинарник, не требующий никаких внешних рантаймов типа ноды или питона?

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

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

С таким подходом можно практически весь фронтенд писать наперед без зависимости от бэкенда. НО! Тут важно понимать, что в 99% случаев что-то в API может поменяться после фактической реализации бэкендом и правильно это все планировать. Условно если рабочий API появляется тогда, когда уже больше половины фронта готово - то нужно закладывать еще какой-то процент человекочасов на потенциальные проблемы.

Так что писать фронтенд без API однозначно можно, но дороже.

То, что после появления рабочего API зачастую необходимо выполнить пару правок на фронте - это частая история, да. Хотя и можно это дело минимизировать при желании. Однако "дороже" это только в тех случаях когда: а) есть уверенность что разработка после выкатки рабочего API будет вестись не в спех, и время на фронтовую задачу будет выделено достаточно. Так как фронтовая часть работ чаще всего выполняется последняя, то любые сдвиги по срокам на предыдущих этапах отражаются на ней; б) нет ситуации что возникает "простой" и разработчикам есть чем себя занять;

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации